2 回答

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
掃描儀的文檔說(shuō):
next() 和 hasNext() 方法及其基元類(lèi)型伴隨方法(例如 nextInt() 和 hasNextInt())首先跳過(guò)與分隔符模式匹配的任何輸入,然后嘗試返回下一個(gè)標(biāo)記。hasNext 和 next 方法都可能阻塞等待進(jìn)一步的輸入
也就是說(shuō),當(dāng)您在hasNextInt()
循環(huán)的第一次迭代開(kāi)始時(shí)進(jìn)行調(diào)用時(shí)while
,程序會(huì)等待一些輸入。因?yàn)樗诘却?,所以它永遠(yuǎn)不會(huì)到達(dá)您的第一個(gè)System.out.print
語(yǔ)句,直到輸入第一個(gè)整數(shù)之后。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
該調(diào)用.hasNextInt()
無(wú)法回答您提出的問(wèn)題(“流中是否有下一個(gè)標(biāo)記?如果有,它是否可以解析為 int?”),直到用戶(hù)鍵入某些內(nèi)容。
一般來(lái)說(shuō),我建議不要使用任何方法has
。就在while(true)
這里吧。
大概您想要一種讓用戶(hù)停止輸入數(shù)字的方法;您可以使用一些表示“好吧,我完成了”的哨兵數(shù)字(例如,-1),或者如果這不是一個(gè)選項(xiàng),請(qǐng)使用.next()
代替.nextInt()
,并檢查輸入的文本是否為DONE
或其他內(nèi)容。如果是,break;
如果不是,int number = Integer.parseInt(text)
.
添加回答
舉報(bào)