System.exit(0)不工作
问题描述:
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)不工作
答
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()
点。换句话说:您应该设计整个应用程序以使用例外。当存在真正的“硬”问题时 - 给用户一个好消息,并抛出一个异常(这可能是您的顶层捕捉并转变为有意义的,定义的非零返回码)。
答
这种情况永远不会满足:
if (count <1 && count>101) System.exit(0);
count
不能超过1
既小且大于101
由于计数不小于1 – tkausl
如何't'既'如果(t 11)'? –
'count'如何可以小于1且大于101? – BackSlash