输入:1 2 3
目标:每个号码都将填入同一个数组。空间将被排除在外。
Scanner in = new Scanner(System.in);
String n = in.nextLine();
System.out.println(n);
int[] nums = new int[n.length()];
for (int i = 0; i < n.length(); i++) {
System.out.println(n.charAt(i));
if (!String.valueOf(n.charAt(i)).equalsIgnoreCase(" ")) {
nums[i] = Character.getNumericValue(n.charAt(i));
}
}
我不知道为什么它还包含空格 " "
。
答案 0 :(得分:3)
实现这一目标的一个简单方法是做类似的事情:
String n = in.nextLine().replace(" ", "");
int nums[] = new int[n.length()];
int i=0;
for(char c : n.toCharArray()) {
nums[i++] = Character.getNumericValue(c);
}
答案 1 :(得分:1)
您可以使用以下方式拆分输入行:
String n = in.nextLine();
String[] splitLine = n.split(" ");
for (String s : splitLine){
//you can save the num in an array
int num = Integer.parseInt(s);
}
答案 2 :(得分:1)
你这样做的方式,nums数组中的元素数量与&#34; n&#34;中的字符数相同。在char是空格的地方,你将获得价值0。 你可以这样试试:
String[] numStrings = n.split("\\D+");
int[] nums = new int[numStrings.length];
int i = 0;
for (String num : numStrings) {
nums[i] = Integer.parseInt(num);
i++;
}
答案 3 :(得分:1)
问题在于代码是当你看到的i
是一个空格时你增加char
事件,这样你就可以在阵列nums
中找到空位
您可以通过以下方式轻松解决此问题:
String n = in.nextLine().replaceAll("\\D", "");
我会从您输入的内容中删除所有non-digit characters
,因此在您不必检查之后:
int[] nums = new int[n.length()];
for (int i = 0; i < n.length(); i++){
nums[i] = Character.getNumericValue(n.charAt(i));
}
或者在使用Java8功能的较少行中(你甚至可以输入1 ^^):
String n = in.nextLine().replaceAll("\\D", "");
int[] nums = Arrays.stream(n.split("")).mapToInt(Integer::parseInt).toArray();
擦除所有非数字后,第二行将每个分成一个数组,然后转换为int
然后转换为array
答案 4 :(得分:1)
我将.equalsIgnoreCase
更改为.equals
并使用指针插入数组。
Scanner in = new Scanner(System.in);
String n = in.nextLine();
System.out.println(n);
int pointer = 0;
int[] nums = new int[n.length()];
for (int i = 0; i < n.length(); i++) {
if (!String.valueOf(n.charAt(i)).equals(" ")) {
nums[pointer] = Character.getNumericValue(n.charAt(i));
pointer++;
}
}