尝试嵌套在While Statement中的catch,清除扫描器

时间:2014-09-01 17:01:45

标签: java while-loop nested try-catch

所以,我正在为学校制作一个小程序,在之前的作业中我们必须创建一个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值的警告做些什么吗? :)

1 个答案:

答案 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;
        }
    }
}
相关问题