如果去掉13,14,15行(就是判斷輸入的數字是否大于0的那幾行代碼),我輸入1進去就會打印出1但是不去掉13,14,15行的話,需要輸入兩次1,才會打印出結果,不知道是為什么public?static?void?main(String[]?args)?{
????int?n?=?0;
????boolean?keeprunning?=?true;
????
????System.out.println("請輸入一個整數:");
????while(keeprunning)?{
????????Scanner?input?=?new?Scanner(System.in);
????????//判斷輸入的是不是一個整數
????????if(!input.hasNextInt?||?input?==?null)?{
????????????System.out.println("您輸入的不是一個整數,請重新輸入:");
????????}
????????//判斷輸入的數字是否大于0
????????else?if(input.nextInt()?<?0)?{
????????????System.out.println("請重新輸入一個大于0的整數:");
????????}
????????else?{
????????????n?=?input.nextInt();
????????????keeprunning?=?false;
????????}
????}
????
????System.out.println(n);
}
2 回答
輕浮與傲慢
TA貢獻9條經驗 獲得超3個贊
第9行hasNextInt()方法忘寫括號了
第9行就進行過一次輸入判斷但是你只是把輸入結果進行是否是整數的判斷,第13行也是只是對輸入的數進行判斷是否小于0并沒有把值存在變量里,所以你第17行又輸入了一次進行判斷,整個流程等同于第一次輸入一個數進行判斷(if)輸入是否是整數(else if)輸入是否大于0(else)前兩個條件均滿足再輸入一個數將keepruning賦值為false然后挑出循環輸出n
你直接輸入一個數使用nextInt()方法用try-catch包裝一下,如果輸入不是整形它會拋出一個異常你可以在catch里輸出一句話這樣就行了,你這樣寫太亂毫無邏輯可言
添加回答
舉報
0/150
提交
取消
