Java 输入负数后循环未终止

Java 输入负数后循环未终止,java,loops,do-while,Java,Loops,Do While,我正在写一个程序,应该读取一个正整数列表(包括0)。如果用户输入超过100个数字或输入负数,则循环应终止 我试着做一个简单的do-while循环来满足这个需求,但是在运行时,无论我提供了什么数字,循环都不会终止。我已经尝试过几次改变循环,但到目前为止都没有成功。我一定犯了一个非常微妙的新手错误,但我似乎没能抓住它 int[] list = new int[100]; int size=0; do{ list[size] = kbd.nextInt();

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

我试着做一个简单的do-while循环来满足这个需求,但是在运行时,无论我提供了什么数字,循环都不会终止。我已经尝试过几次改变循环,但到目前为止都没有成功。我一定犯了一个非常微妙的新手错误,但我似乎没能抓住它

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


}
int[]list=newint[100];
int size=0;
做{
list[size]=kbd.nextInt();
大小++;
}而((大小<100)和&(列表[size]>=0));
}

您的问题是在测试
列表[size]>=0
之前增加了
大小。你应该把这个改成

do{
    list[size] = kbd.nextInt();
    size++;
}while((size < 100) && (list[size-1] >= 0));
do{
list[size]=kbd.nextInt();
大小++;
}而((大小<100)和&(列表[size-1]>=0));

为什么不使用for循环来实现您想要的功能?在我看来,使用数组时,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;
}
int[]list=newint[100];
int tmp;
//此循环将运行100次,因为list.length()为100
对于(int i=0;i
当然不是。您刚刚增加了
大小
,所以<代码>列表<代码>下一个元素的值是<代码> 0 .@ S24569如果您对答案满意,请在15分钟的等待期内接受它,点击得分下方的绿色小复选标记。在if条件语句中使用break语句,他将立即扣分。如果他不是在我们头顶上徘徊着坏成绩的威胁,我会像你那样做的。但我真的不明白你的老师为什么要这么做。这毫无意义。我的意思是,限制软件开发人员只使用一种解决方案是愚蠢的。特别是如果你限制他使用最好的解决方案。。。