如何在没有空格的java中输入?

Ada*_*rsh 0 java arrays input

如何在没有空格的单行中获取整数数组的输入.数字只能是0-9,所以每个东西都是单个数字.

输入: -

123456
Run Code Online (Sandbox Code Playgroud)

输出: -

a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 a[5]=6
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

Psh*_*emo 6

假设您正在以String形式输入,您可以执行类似的操作(自Java 8以来可以使用流和lambda)

String input = "123456";
int[] array = input.chars().map(i->i-'0').toArray();

System.out.println(Arrays.toString(array));
Run Code Online (Sandbox Code Playgroud)

输出: [1, 2, 3, 4, 5, 6]

此代码可以视为较短版本

String input = "123456";
int[] array = new int[input.length()];
int i = 0;
for (char c : input.toCharArray())
    array[i++] = c - '0';
Run Code Online (Sandbox Code Playgroud)

无论如何,这个解决方案是基于整数值或char在Unicode表中表示其索引的想法.由于数字是有序的,因为0,1,2,3,4,5,6,7,8,9我们对检查字符的位置和位置之间的差异感兴趣'0'.例如'3',索引位于索引处51,索引'0'值为48,因此int value = '3'-'0'转换为int value = 51 - 48创建带值的整数3.


或者,如果这是一个选项,您可以通过简单地使用来获取char[]数组,而不是int[]包含字符串中的所有字符toCharArray

String input = "123456";
char[] array = input.toCharArray();
Run Code Online (Sandbox Code Playgroud)

如果您对结果感兴趣,String[]那么自Java 8以来您就可以使用了

String input = "123456";
String[] array = input.split("");
Run Code Online (Sandbox Code Playgroud)

而不是神秘的(即使是对那些正则表达式的基本知识): ,,split("(?!^)") 或任何正则表达式,你能想到的.split("(?<!^)")split("(?<=\\d)")