【发布时间】:2014-09-01 17:01:44
【问题描述】:
所以,我正在为学校制作一个小程序,在之前的作业中,我们必须创建一个 try catch finally 语句,以使程序在崩溃时不会完全崩溃,如果这有任何意义的话......
对于我现在正在处理的这项任务,这不是一个需求,但我真的很想找到一个合适的方法来做到这一点,到目前为止,我已经创建了一些类似于下面代码的东西。
我的问题在于扫描器会记住上次输入中写入的内容,因此当有人编写导致其崩溃并再次设置 while 循环的内容时,第一个问题会再次得到回答..
所以我有点想知道是否有办法在程序再次返回代码顶部之前“清除”扫描仪?
我发现以前有人发过关于此问题的帖子,他们的回答似乎类似于“不,这不可能......”
但我想有办法解决这个问题?
我想这可能是我设置代码的方式等等..
另外,我要再次提到,这是我的 java 课中作业的一部分;有点,核心程序本身是,但是这个程序的 try catch 部分,尤其是重新启动它不是。但我总是渴望了解更多关于这方面的信息:)
示例
Scanner keys = new Scanner(System.in)
Boolean abc = true;
String bucket;
int numbers = 0;
while(abc == true){
abc = false;
try{
System.out.println("do you like me?")
bucket = keys.nextLine(); *//user types in some string..*
if(bucket.equalsIgnoreCase("yes")){
System.out.println("Yay! I love you too! :P");
}
else if(bucket.equalsIgnoreCase("no")){
System.out.println("awww..");
}
System.out.println("How much money do you have on you?");
numbers = keys.nextInt(); *//user types in **ex**. "no"*
System.out.println(numbers);
}
catch(Exception a){
abc == true;
}
finally{
if(abc == false){
keys.close;
}
}
}
//当用户通过在 int 框中键入“no”来使程序崩溃时,程序会捕获它并启动 while 循环,然后它会读取“no”,因为没有任何东西从扫描仪变量中取出这个值,并且然后“你喜欢我吗”这个问题会自动得到回答。所以如果我对任何不是“是”或“不是”有一个“其他”,那么这就是自动选择。
我真的希望你们(和女孩?)可能知道一些事情,或者看到我的逻辑中可能解决这个问题的严重缺陷:)
感谢您调查并帮助我解决这个问题! :D
也作为旁注问题;你知道为什么人们倾向于使用“catch(Exception e)”和“e”作为异常的“名称”吗? :) 只是好奇..
编辑:所以我发现我可以放入 String cleanUp;然后是 cleanUp = keys.nextString();在 catch 块中..
新的问题立即出现:我应该对编译器给我的关于从未使用过的 cleanUp 值的警告做点什么吗? :)
【问题讨论】:
标签: java while-loop nested try-catch