我收到一个错误,我不明白原因 . 我正在尝试使用 Scanner 方法获取用户输入,以便为数组的索引赋值 . 允许用户保持 - 继续 - 将值输入到数组编号中,但是,如果用户决定停止,则输入 0 将中断数组索引值的分配 .
int[] numbers = new int[100];
int[] countIndex = new int[100];
int[] numberOcc = new int[100];
for (int i = 0; i < countIndex.length; i++)
{
countIndex[i] = i;
}
System.out.println("Enter your integer values: ");
for (int i = 0; i < numbers.length; i++)
{
if(input.nextInt() == 0)
{
break;
}
else
{
numbers[i] = input.nextInt();
}
}
这段代码只是更大代码的一小部分,但是,它非常重要 . The error 我得到的是代码允许用户在移动到下一个索引之前输入两次,但输入的第一个整数总是被跳过:
Enter your integer values:
1
2
0
0 occurs 99 times
2 occurs 1 time
UPDATES
System.out.println("Enter your integer values: ");
for (int i = 0; i < numbers.length; i++)
{
numbers[i] = input.nextInt();
if(numbers[i] == 0)
{
break;
}
}
为什么忽略 1 作为输入?另外,使用 input.nextInt() 作为if-else语句坏代码设计的条件?
1 回答
从评论
By default, int values will be assigned 0 . 因此,当您不将非零值分配给int时,它们仍将为0 .
一种方法是使用arraylist . 然后,一旦输入所有数字,就可以将arraylist转换为数组 .
没有任何输入验证的简单示例
如果你想将Integer arraylist转换为int数组,只需在google上搜索,就会有很多类似的问题 .
Demo