本題考察 Scanner.hasNextInt() 循環條件、整數輸入處理、條件判斷與輸出格式。
package Nov2016;
import java.util.Scanner;
public class Ques1123 {
public static void main(String[] args) {
Scanner num = new Scanner(System.in);
System.out.print("請輸入數量:");
while (num.hasNextInt()) {
int n = num.nextInt();
// 輸入數量+1000後與1500比較
if (n > 0 && n + 1000 < 1500) {
System.out.println("輸入的數是:" + n);
}
}
}
}
Scanner 讀取標準輸入,hasNextInt() 判斷下一個 token 是否為整數(遇到非整數或 EOF 返回 false,循環結束)。n。n > 0 && n + 1000 < 1500 等價於 0 < n < 500。輸入的數是:n;不滿足無任何輸出,繼續等待下一個輸入。請輸入數量:100
輸入的數是:100
200
輸入的數是:200
600
499
輸入的數是:499
abc
(程序結束)
Scanner.hasNextInt() 不消耗 token,只預判;nextInt() 消耗並返回。n=500 時 500+1000=1500 不滿足 <1500,無輸出。// 增加退出提示與非整數處理
System.out.println("請輸入整數(非整數退出):");
while (num.hasNext()) {
if (num.hasNextInt()) {
int n = num.nextInt();
if (n > 0 && n + 1000 < 1500) {
System.out.println("輸入的數是:" + n);
}
} else {
String token = num.next(); // 消耗非整數 token 避免死循環
System.out.println("檢測到非整數 \"" + token + "\",退出。");
break;
}
}