2017-09-04 62 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

相关问题