使用JOption尝试和捕获无法按预期工作

时间:2014-08-21 08:48:57

标签: java loops exception

    int i=0;
    int c=0;
    int a=0;
    int b=0;
    String stringy;
    String input;

    do { //loop for value a
        try // try-catch to prevent program from crashing
        {
            stringy= JOptionPane.showInputDialog("Type a value for a or press q to quit:");                       
            if (stringy.equalsIgnoreCase("q")) System.exit(0); 
            a = Integer.parseInt(stringy);
            i++;               
         } catch (Exception e) {
               stringy= JOptionPane.showInputDialog("Error. Try Again! ");                 
         }  // end catch     
    } while(i==0); // end loop

输出会生成一个jOption输入对话框("type a value..."),当我输入字符串或系统不期望的内容时,它会转到"catch"并弹出"error try again!"但是当我输入任何内容时,即使它是一个数字,它也会返回到(“键入值...”)对话框。我希望它在错误框中读取输入而不是跳回到第一个对话框。谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

如果要使用来自catch()的输入,则应将基本输入取消循环。 并使用break;子句代替while(i==0)i++;

       stringy= JOptionPane.showInputDialog("Type a value for a or press q to quit: ");
       while(true)
       {
           if (stringy.equalsIgnoreCase("q")) System.exit(0);
           try {
               a = Integer.parseInt(stringy);
               break;
           } catch (Exception e) {
              stringy= JOptionPane.showInputDialog("Error. Try Again! ");
           }             
       }
       JoptionPane.showMessageDialog("Input accepted!");

请以正确的格式编写代码,你在周期开始时评论了'{'。

答案 1 :(得分:0)

您显然必须检查第二个对话框的输入,类似于以下内容:

stringy = JOptionPane.showInputDialog("Error. Try Again! ");

if (stringy.equalsIgnoreCase("q")) {
    System.exit(0);
}

答案 2 :(得分:0)

如何为输出添加字符串。

    String input;
    String output = "Type a value for a or press q to quit: "

    do  //loop for value a        {
        try // try-catch to prevent program from crashing
        {
            stringy= JOptionPane.showInputDialog(output);                       
                            if (stringy.equalsIgnoreCase("q"))          
            {
              System.exit(0);
            }             
            a= Integer.parseInt(stringy);
            i++;               
         }
         catch (Exception e)
         {
               output= "Error. Try Again! ";                 

         }