2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
您檢查以確保輸入具有下一個(gè) int,但是一旦Scanner具有下一個(gè) int,您就永遠(yuǎn)不會(huì)將 int 解析為entry,因此它仍然是錯(cuò)誤的輸入。您需要將int用戶輸入的分配給entry。您只需調(diào)用即可輕松完成此操作nextInt():
while (!keyboard.hasNextInt()) {
entry = keyboard.next();
System.out.println("That is not an integer. " + "Please try again.");
}
numberEntered = keyboard.nextInt();
System.out.print(numberEntered);
return numberEntered;

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
當(dāng)您將字符作為輸入提供時(shí),while 循環(huán)條件為真,因此它進(jìn)入 while 循環(huán)并掃描字符和打印字符的值,但是當(dāng)您提供整數(shù)時(shí),while 循環(huán)條件變?yōu)榧俨⑶也粫?huì)進(jìn)入 while 循環(huán). 在 while 循環(huán)之外,您正在解析整數(shù),您不需要這樣做,因?yàn)槟鷮⒄麛?shù)作為輸入。您所要做的就是在 integer.parseInt(entry) 的位置,您必須掃描整數(shù)即 int i =keyboard.nextInt(); 因?yàn)樵?while 循環(huán)條件中,您只檢查您提供的輸入是否為整數(shù)。但是您沒有掃描整數(shù)的輸入。
試試這個(gè)?。?!
int numberEntered = 0;
String entry = "";
Scanner keyboard = new Scanner(System.in);
while (!keyboard.hasNextInt()) {
entry = keyboard.next();
System.out.println("That is not an integer. " +"Please try again.");
}
numberEntered = keyboard.nextInt();
System.out.print(numberEntered);
添加回答
舉報(bào)