输入负数后循环不终止

时间:2017-04-11 19:11:38

标签: java loops do-while

我正在编写一个应该在正整数列表中读取的程序(包括0)。如果用户输入的数字超过100或输入负数,则该循环应该终止。

我尝试做一个简单的do-while循环来解决这个问题但是在运行时,无论我提供什么数字,循环都不会终止。我试过几次改变循环,到目前为止都没有成功。我一定是犯了一个非常微妙的菜鸟错误,但我似乎无法抓住它。

    int[] list = new int[100];
    int size=0;
    do{
        list[size] = kbd.nextInt();
        size++;
    }while((size < 100) && (list[size] >= 0));


}

2 个答案:

答案 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;
}