【问题标题】:try catch trouble // while loop placementtry catch trouble // while 循环放置
【发布时间】:2019-09-24 03:13:57
【问题描述】:

我的程序接受整数输入,然后是更大的整数输入,然后是字符串。

“输入一个数字:”

"请输入一个更大的数字:"

"输入一个字符串:"

如果输入的是字符串而不是整数,我试图使用 try/catch 来捕获情况。我有点让代码工作了,但是在错误消息执行后,它会跳过下一个 int 输入问题并直接进入“输入字符串”。

我假设我需要在某处使用 while 循环,但我无法确定将其放置在何处以及使用什么参数。简单地说,(我认为)我需要:while(输入!=字符串)。我只是不知道该怎么做。

try {
            System.out.println("Enter a number: ");

            int start = myscanner.nextInt();

            System.out.println("Enter a bigger number: ");

            int end = myscanner.nextInt();

            if (start > end) {
                System.out.println("Error: Start should be smaller.");
            } else {

                int result = sumInt(start, end);
                System.out.println("Result: " + result);
            }
        } catch (InputMismatchException exception) {
            System.out.println("Enter a number, not a string.");

        }
```````````````````````````````````````````````````````````````````````````

【问题讨论】:

  • 你试过使用do-while吗?请参考此链接:docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html
  • 我试过do-while。老实说,我被难住了。无论我在哪里放置循环,我都会通过下面的其余代码得到错误。也许我只是完全采取了错误的方法。如果输入了错误的数据类型,我想要的只是捕捉错误。感谢您的帮助。
  • 也许你可以使用这样的东西: if (row start!= int) { throw new IllegalArgumentException("请输入整数。"); }
  • 我试过:while (throw start != int) 并得到“非法的表达式开始”和“.class 预期”。我似乎无法做到这一点。
  • 您不能在条件语句中使用 throw。必须如下所示:while(start != int) { throw new IllegalArgumentException("请输入一个整数"): }

标签: java loops while-loop try-catch


【解决方案1】:
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) {
       try{
            Scanner myscanner = new Scanner(System.in); 
            int option =1;
            do{
               System.out.println("Enter a number: ");
               String start = myscanner.next();
               boolean sflag= isInteger(start);
               if(!sflag )
               {System.out.println("Error: value not Integer.");  continue;}
               System.out.println("Enter a bigger number: ");
               String end = myscanner.next();
               boolean eflag=  isInteger(end);
              if( !eflag)
                {System.out.println("Error: value not Integer.");  continue;}
              if ( Integer.parseInt(start) > Integer.parseInt(  end)) {
                 System.out.println("Error: Start should be smaller.");
              } else {
                 int result = sumInt( Integer.parseInt( start),  
                 Integer.parseInt( end));
                 System.out.println("Result: " + result);
                 System.out.println("select following option");
                 System.out.println("1. continue");
                 System.out.println("2.exit");
                 option = myscanner.nextInt();
                  //isInteger(option);
             }

        }while(option != 2);

     }catch(Exception e){
        System.out.println(e);
    }
}
public static boolean isInteger( String input ) {
try {
  Integer.parseInt( input );
  return true;
 }
  catch( Exception e ) {
  return false;
 }
 }
      public static Integer sumInt(int start, int end){
      return start + end;
   }
}

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 2015-04-24
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多