亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 while 循環中會跳過第一條語句?

為什么 while 循環中會跳過第一條語句?

回首憶惘然 2023-11-01 16:43:22
在While循環中,為什么第一次跳過第一個打印語句(要求用戶輸入數字)?我認為這是因為我不明白 hasNextInt() 方法是如何工作的,我嘗試過并閱讀了它,但實際上并沒有走得太遠。最簡單的解決方案是將一個 print 語句放在循環之外,我嘗試過并且它有效,但我只想知道為什么在第一次迭代中跳過該語句。Scanner scanner = new Scanner(System.in);        int max = Integer.MIN_VALUE;        int min = Integer.MAX_VALUE;        int number;        while(scanner.hasNextInt()) {            System.out.print("Enter a number: ");            number = scanner.nextInt();            scanner.nextLine();            max = Math.max(max,number);            min = Math.min(min,number);        }        System.out.println("Max number is "+max);        System.out.println("Min number is "+min);        scanner.close();
查看完整描述

2 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

掃描儀的文檔說:

next() 和 hasNext() 方法及其基元類型伴隨方法(例如 nextInt() 和 hasNextInt())首先跳過與分隔符模式匹配的任何輸入,然后嘗試返回下一個標記。hasNext 和 next 方法都可能阻塞等待進一步的輸入

也就是說,當您在hasNextInt()循環的第一次迭代開始時進行調用時while,程序會等待一些輸入。因為它正在等待,所以它永遠不會到達您的第一個System.out.print語句,直到輸入第一個整數之后。


查看完整回答
反對 回復 2023-11-01
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

該調用.hasNextInt()無法回答您提出的問題(“流中是否有下一個標記?如果有,它是否可以解析為 int?”),直到用戶鍵入某些內容。

一般來說,我建議不要使用任何方法has。就在while(true)這里吧。

大概您想要一種讓用戶停止輸入數字的方法;您可以使用一些表示“好吧,我完成了”的哨兵數字(例如,-1),或者如果這不是一個選項,請使用.next()代替.nextInt(),并檢查輸入的文本是否為DONE或其他內容。如果是,break;如果不是,int number = Integer.parseInt(text).


查看完整回答
反對 回復 2023-11-01
  • 2 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號