所以,我正在为学校制作一个小程序,在之前的作业中我们必须创建一个try catch finally语句,以使程序在崩溃时不会完全崩溃,如果这有任何意义......
对于我现在正在进行的这项任务,这不是一个需求,但我真的想找到一个正确的方法来做到这一点,到目前为止,我已经为下面的代码创建了一些亲属。
我的问题在于扫描仪会记住最后一次输入中写入的内容,所以当有人写出崩溃的内容并再次设置while循环时,第一个问题会再次得到解答。
所以我有点想知道在程序再次返回到代码顶部之前是否有办法“清除”扫描程序?
我之前发现人们提出有关此问题的帖子,他们似乎得到的答案类似于“不,这是不可能的......”
但我想有办法解决这个问题吗?
我想这可能是我设置代码的方式......
另外,我再次提到这是我的java课程中的家庭作业的一部分;核心程序本身就是这样,但尝试捕获这一部分,特别是重新启动它不是。但我总是渴望更多地了解这一点:)
示例
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”,因为没有从scanner变量中取出该值,并且那么“你喜欢我”这个问题会自动得到解答..所以,如果我对任何不是或不是的东西都有“其他”,那么这就是自动选择..
我真的希望你们(和女孩们?)可能知道某些事情,或者看到我的逻辑中存在一个可能解决这个问题的严重缺陷:)
感谢您关注并帮助我! :d
也作为旁注问题;你知道为什么人们倾向于使用“catch(例外e)”和“e”作为例外的“名称”吗? :)只是好奇..
编辑:所以我发现我可以放入一个String cleanUp;然后是cleanUp = keys.nextString();在拦截区..
新问题立刻出现了:我应该对编译器给我的关于从未使用过的cleanUp值的警告做些什么吗? :)
答案 0 :(得分:1)
你不需要abc == true,如果没有输入你就可以中断或者你可以使它等于假
while(abc){
try{
System.out.println("do you like me?")
bucket = keys.nextLine(); *//user types in some string..*
if(bucket.equals("yes")){
System.out.println("Yay! I love you too! :P");
}
else {
abc = false;
}
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;
}
}
}