每当我使用while
循环向用户询问input
n次时,它会超过该条件,忽略它,然后循环一段时间。
例如,如果我希望我的while
循环执行5次,它将执行6次。
它目前的作用:它首先要求: 输入数字0:直到它达到输入数字4.然而,它不是在数字4结束,而是继续要求数字5.总共有6个数字,从数字0到数字5。
我还应该补充一点:您可以输入@@
来停止输入数字,然后它将退出该循环并对这些数字执行某些操作。
/* Global Variables */
static final int MAXTIMESTOLOOP = 5;
static LinkedList<String> numberList = new LinkedList<String>();
static int totalNumbers = 0;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String numberInput;
System.out.print("Enter number " + totalNumbers + ". Type @@ to stop.");
numberInput = input.next();
while(!numberInput.equals("@@") && totalNumbers < MAXTIMESTOLOOP) {
/* Add number to numberList */
numberList.add(numberInput);
totalNumbers++;
System.out.print("Enter number " + totalNumbers + ". Type @@ to stop.");
numberInput = input.next();
}
}
Enter number 0. Type @@ to stop. 5
Enter number 1. Type @@ to stop. 8
[..]
Enter number 4. Type @@ to stop. 12
Enter number 5. Type @@ to stop. 14
相反,我希望它停在第4位,因为那时它应该终止。
Enter number 0. Type @@ to stop. 12
Enter number 1. Type @@ to stop. 4
[...]
Enter number 4. Type @@ to stop. 1
我希望它停在第4位,而不是继续排在第5位。但我似乎无法确定原因是什么原因。
调试代码后,我发现变量totalNumbers增加到5然后循环回来。我不明白为什么会这样,因为我有条件:totalNumbers < MAXTIMESTOLOOP
与while(0 < 5)
答案 0 :(得分:2)
在while循环之前输入第一个数字,但不会增加TOTALNUMBERS。在你的循环中,TOTALNUMBERS的持续条件&lt;当TOTALNUMBERS = 4时满足MAXTIMESTOLOOP,但在循环内增加,显示第5个条目提示。
我会修改循环以将测试条件移动到最后,并消除无关的输入。
do {
/* Add number to numberList */
System.out.print("Enter number " + TOTALNUMBERS + ". Type @@ to stop.");
numberInput = input.next();
if (!numberInput.equals("@@")){
numberList.add(numberInput);
TOTALNUMBERS++;
}
}
while (!numberInput.equals("@@") && TOTALNUMBERS < MAXTIMESTOLOOP);
答案 1 :(得分:2)
您可以尝试使用do-while循环,如下所示:
static final int MAXTIMESTOLOOP = 5;
static LinkedList<String> numberList = new LinkedList<String>();
static int TOTALNUMBERS = 0;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String numberInput;
do{
System.out.print("Enter number " + TOTALNUMBERS + ". Type @@ to stop.");
numberInput = input.next();
/* Add number to numberList */
numberList.add(numberInput);
TOTALNUMBERS++;
}
while (!numberInput.equals("@@") && TOTALNUMBERS < MAXTIMESTOLOOP);
}