如何在没有空格的单行中获取整数数组的输入.数字只能是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)
请帮我解决这个问题.
假设您正在以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)")
| 归档时间: |
|
| 查看次数: |
1850 次 |
| 最近记录: |