我正在编写一个应该在正整数列表中读取的程序(包括0)。如果用户输入的数字超过100或输入负数,则该循环应该终止。
我尝试做一个简单的do-while循环来解决这个问题但是在运行时,无论我提供什么数字,循环都不会终止。我试过几次改变循环,到目前为止都没有成功。我一定是犯了一个非常微妙的菜鸟错误,但我似乎无法抓住它。
int[] list = new int[100];
int size=0;
do{
list[size] = kbd.nextInt();
size++;
}while((size < 100) && (list[size] >= 0));
}
答案 0 :(得分:6)
您的问题是在测试size
之前增加list[size] >= 0
。你应该把它改成
do{
list[size] = kbd.nextInt();
size++;
}while((size < 100) && (list[size-1] >= 0));
答案 1 :(得分:1)
为什么不使用for-loop来做你想做的事情?在我看来,在使用数组时,for循环更容易使用。以下是如何使用这样的for循环解决问题的示例:
int[] list = new int[100];
int tmp;
//This loop will run 100 times because your list.length() is 100
for(int i = 0; i < list.length(); i++) {
tmp = kbd.nextInt(); //Saving user input temporary
if(tmp < 0) //Exit loop when input is negative
break;
else //Add input to list
list[i] = tmp;
}