![](/img/trans.png)
[英]Using hasNextInt with do-while loop, no error message for negative integer
[英]Do-While loop and hasNextInt()
我知道這可能聽起來像一個非常愚蠢的問題,但我無法理解我的錯誤在哪里。
為什么在循環的第二次迭代中,它不會打印'輸入數字:'?
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner console = new Scanner(System.in);
int[] v = new int[10];
int index = 0;
do {
System.out.print("Enter a number:\t");
v[index] = console.nextInt();
index++;
} while(console.hasNextInt());
for (int i = 0; i < index; i++){
System.out.print(v[i] + "\t");
}
System.out.println("\n" + index);
}
}
這是輸出:
Enter a number: 1
2
Enter a number: 3
Enter a number: 4
Enter a number: 5
Enter a number: ^D
1 2 3 4 5
5
因為hasNextInt
阻塞,直到控制台上有一個int
,因此不會進入循環的下一次迭代。
歡迎。 請參閱評論中的答案。 希望很清楚:-)
do {
System.out.print("Enter a number:\t"); // Prints "Enter a number: "
v[index] = console.nextInt(); // accepts input "1"
index++; // increments
} while(console.hasNextInt()); // waits for input at which point you enter "2"
好的,讓我們更清楚。
do while循環在評估while條件之前執行do塊。 然后,如果while條件的計算結果為true,它將再次執行do塊並重復,直到while條件的計算結果為false。 。
console.nextInt和console.hasNextInt都從控制台讀取輸入。 因此作為do塊的一部分,打印出“輸入數字:\\ t”,第一個nextInt()調用已接受輸入“1”,然后是增量,然后評估while condition - console.hasNextInt(),它再次等待輸入並接受“2”。 這解釋了為什么在用戶輸入“2”之前沒有打印“輸入數字:\\ t”
當然因為輸入了值2,所以while條件的計算結果為true,並且do塊再次執行並繼續。
也許你需要while循環。 相反,只有當while條件的計算結果為true時,才會執行此代碼塊
System.out.print("Enter a number:\t");
while(console.hasNextInt()){
v[index] = console.nextInt();
index++; // increments
System.out.print("Enter a number:\t");
}
考慮到達到足夠大小的數組時退出循環。 就像是
do {
System.out.print("Enter a number:\t");
v[index] = console.nextInt();
index++;
} while(index<10); // if you want the user to enter 10 numbers.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.