【问题标题】:Try catch nested in While Statement, clearing scanner尝试嵌套在 While 语句中的 catch,清除扫描仪
【发布时间】: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


    【解决方案1】:

    您不需要 abc==true,如果输入 no 时,您可以直接中断,也可以使其等于 false

    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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-03
      • 2022-11-30
      • 2020-06-22
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      相关资源
      最近更新 更多