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

时间:2014-09-05 15:39:17

标签: java arrays input

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

输入: -

123456

输出: -

a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 a[5]=6

请帮我解决这个问题。

5 个答案:

答案 0 :(得分:6)

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

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

System.out.println(Arrays.toString(array));

输出:[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';

无论如何,此解决方案基于整数值或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,这会创建值为{的{ {1}}。


或者,如果这是一个选项,您可以通过简单地使用3

获取char[]数组而不是int[],其中包含字符串中的所有字符
toCharArray

如果您对结果感兴趣String input = "123456"; char[] array = input.toCharArray(); ,那么since Java 8 you can simply use

String[]

而不是神秘的(即使是那些具有基本正则表达式知识的人):String input = "123456"; String[] array = input.split(""); split("(?!^)")split("(?<!^)")或您能想到的任何正则表达式。

答案 1 :(得分:2)

以字符串形式接受并使用split()方法,如下所示:

"123".split("(?!^)")

将生成一个字符串数组

array ["1", "2", "3"]

答案 2 :(得分:0)

如果您假设您的整数都是单位数,您可以执行以下操作,但我没有注意到这样做的兴趣:

 Scanner sc     = new Scanner(System.in);
 String  s      = sc.nextLine();
 int[]   values = new int[s.length()]; 
 for (int i=0 ; i<values.length ; i++) 
     values[i] = s.charAt(i) - '0';

答案 3 :(得分:0)

这样做的一种方法是认识到Scanner类默认使用分隔符解析事物,而有一个名为findInLine()的方法,其中&#34;尝试查找下一个出现的指定的模式忽略分隔符。&#34;

您可以创建一个匹配单个数字的Pattern,然后让Scanner通过sans-separator进行解析,如下所示:

Scanner scan = new Scanner("123456");
Pattern digit = Pattern.compile("\\d");
String nextInt = scan.findInLine(digit);
while (nextInt != null) {
    System.out.println(nextInt);
    nextInt = scan.findInLine(digit);
}


output:
1
2
3
4
5
6

答案 4 :(得分:0)

试试这个

  

“123456” .toCharArray()