如果去掉13,14,15行(就是判斷輸入的數(shù)字是否大于0的那幾行代碼),我輸入1進(jìn)去就會(huì)打印出1但是不去掉13,14,15行的話,需要輸入兩次1,才會(huì)打印出結(jié)果,不知道是為什么public?static?void?main(String[]?args)?{
????int?n?=?0;
????boolean?keeprunning?=?true;
????
????System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
????while(keeprunning)?{
????????Scanner?input?=?new?Scanner(System.in);
????????//判斷輸入的是不是一個(gè)整數(shù)
????????if(!input.hasNextInt?||?input?==?null)?{
????????????System.out.println("您輸入的不是一個(gè)整數(shù),請(qǐng)重新輸入:");
????????}
????????//判斷輸入的數(shù)字是否大于0
????????else?if(input.nextInt()?<?0)?{
????????????System.out.println("請(qǐng)重新輸入一個(gè)大于0的整數(shù):");
????????}
????????else?{
????????????n?=?input.nextInt();
????????????keeprunning?=?false;
????????}
????}
????
????System.out.println(n);
}
2 回答

輕浮與傲慢
TA貢獻(xiàn)9條經(jīng)驗(yàn) 獲得超3個(gè)贊
第9行hasNextInt()方法忘寫括號(hào)了
第9行就進(jìn)行過一次輸入判斷但是你只是把輸入結(jié)果進(jìn)行是否是整數(shù)的判斷,第13行也是只是對(duì)輸入的數(shù)進(jìn)行判斷是否小于0并沒有把值存在變量里,所以你第17行又輸入了一次進(jìn)行判斷,整個(gè)流程等同于第一次輸入一個(gè)數(shù)進(jìn)行判斷(if)輸入是否是整數(shù)(else if)輸入是否大于0(else)前兩個(gè)條件均滿足再輸入一個(gè)數(shù)將keepruning賦值為false然后挑出循環(huán)輸出n
你直接輸入一個(gè)數(shù)使用nextInt()方法用try-catch包裝一下,如果輸入不是整形它會(huì)拋出一個(gè)異常你可以在catch里輸出一句話這樣就行了,你這樣寫太亂毫無邏輯可言
添加回答
舉報(bào)
0/150
提交
取消