2017-09-04 89 views
-6
try 
    { BufferedReader br=new BufferedReader(new 
              InputStreamReader(System.in)); 
     int t=Integer.parseInt(br.readLine()); 
     if (t <0 && t>11) System.exit(0); 
     for (int i = 0; i<t;i++){ 
      int count=Integer.parseInt(br.readLine()); 
      if (count <1 && count>101) System.exit(0); 
      . 
      . 
    }catch(Exception e){} 
    } 

如果count> = 102程序沒有終止任何人都可以建議我該怎麼做,爲什麼? t> = 11System.exit(0)不工作

+0

由於計數不小於1 – tkausl

+0

如何't'既'如果(t <0 && t> 11)'? –

+6

'count'如何可以小於1且大於101? – BackSlash

回答

5
if (t <0 && t>11) System.exit(0); 

在同一時間點,一個數字不能小於0且大於11。或者更確切地說:Java支持不允許的數字類型。

在這個意義上,你可能是指:

if (numberFromUser < 0 || numberFromUser > 11) { 
System.out.println("number " + numberFromUser + " is invalid, exiting"); 
System.exit(1); 
} 

並請注意改變我做:

  • t絕對是一個毫無意義的名字 - 使用的名稱是意味着東西
  • 總是始終總是使用{大括號} - 即使對於如此簡單的一行狀態動詞
  • 剛剛退出是一個不好的想法:你想給用戶反饋出了什麼問題。或者你喜歡它,當你的電腦停止了一些事情而不告訴你爲什麼?
  • 然後:你有一個 catch塊 - 另一個超級壞主意。 禁止錯誤消息沒有意義。您是否有興趣瞭解您的程序何時出現錯誤?
  • 傳遞給System.exit()的值是您的應用程序的「返回代碼」。並按照慣例,返回意味着:一切順利,通過。因此,您應該在錯誤情況下返回零以外的內容。

最後:使用System.exit()所有的地方是本身不好的做法。你真的不希望你的應用程序有更多的一個exit()點。換句話說:您應該設計整個應用程序以使用例外。當存在真正的「硬」問題時 - 給用戶一個好消息,並拋出一個異常(這可能是您的頂層捕捉並轉變爲有意義的,定義的非零返回碼)。

+0

@ScaryWombat這就是爲什麼我的答案包含其他元素,而不是在其他答案中找到;-) – GhostCat

+0

是的,它現在。我喜歡你的其他觀點。 –

+0

@ScaryWombat https://stackoverflow.com/help/badges/146/legendary – GhostCat

0

count不能小於0且大於11。

+0

實際上,這是對t的測試,計數應該小於1並且大於101 – Stultuske

0

這種情況永遠不會滿足:

if (count <1 && count>101) System.exit(0); 

count不能超過1既小且大於101