Java 输入负数后循环未终止
我正在写一个程序,应该读取一个正整数列表(包括0)。如果用户输入超过100个数字或输入负数,则循环应终止 我试着做一个简单的do-while循环来满足这个需求,但是在运行时,无论我提供了什么数字,循环都不会终止。我已经尝试过几次改变循环,但到目前为止都没有成功。我一定犯了一个非常微妙的新手错误,但我似乎没能抓住它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();
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语句,他将立即扣分。如果他不是在我们头顶上徘徊着坏成绩的威胁,我会像你那样做的。但我真的不明白你的老师为什么要这么做。这毫无意义。我的意思是,限制软件开发人员只使用一种解决方案是愚蠢的。特别是如果你限制他使用最好的解决方案。。。