它没有读取字符串,它仍然从catch中输出。我怎样才能读到" q"然后退出

时间:2014-08-15 14:11:18

标签: java

do {
    try {
        System.out.println("how many times");

        stringy = scanner.next();
        rollnumber = Integer.parseInt(stringy);

        if (stringy.equals("q")){
            System.exit(0);
        }
        nigh = 2;
    } catch (Exception e) {
        System.out.println("invalid. re-enter");
        scanner.nextLine();
    }
} while (nigh == 1);

我不确定我做错了什么。它应该读取字符串,但它显然没有在system.exit中注册它。请向我解释一下,例子会很好!谢谢!

3 个答案:

答案 0 :(得分:5)

它永远不会达到检查" q"的条件,因为它会在parseInt中出现异常。

如果键入" q",parseInt会在检查" q"的条件之前抛出NumberFormatException。

您应该将rollnumber= Integer.parseInt(stringy);行移至条件之后。

我的建议(没有System.exit()):

boolean quit = false;
do {  
 try {
    System.out.println("how many times");   
    stringy= scanner.next();                
    if (stringy.equals("q")) {
       quit = true;
    } else {
       rollnumber= Integer.parseInt(stringy);
    } 
 }
 catch (Exception e)
 {
    System.out.println("invalid. re-enter");
    scanner.nextLine();
 }          
} while (!quit);

答案 1 :(得分:-2)

我认为当您尝试退出应用时,您不会退出while循环。也许您可以尝试在尝试退出应用程序后在if中添加return语句。

答案 2 :(得分:-2)

试试这个:

do {
    try {
        System.out.println("how many times");
        stringy = scanner.next();
        if (stringy.equals("q")){
          System.exit(0);
        }
        rollnumber = Integer.parseInt(stringy);
        nigh = 2;
   }catch (Exception e) {
        System.out.println("invalid. re-enter");
        scanner.nextLine();
   }
} while (nigh == 1);