Java 检查用户输入是否为Int(无异常)?

Java 检查用户输入是否为Int(无异常)?,java,exception,math,Java,Exception,Math,我正在尝试创建一个简单的程序,从用户输入中获取两个数字并将它们相加。我已经记下了它的正确用法,但是如果用户输入了其他东西,比如字符串,我试图阻止崩溃。当我听说输入是不好的做法时,我如何能毫无例外地检查输入 理想情况下,我希望它只是重复最初的问题,要求输入一个数字。我想这是一个循环 即 询问用户第一个号码 如果不是int,请重复 询问用户第二个号码 如果不是int,请重复 做数学 编辑:所以到目前为止,我几乎已经得到了帮助。我使用了一些do-while循环来让它重复这个问题,直到输入是一个整数。但

我正在尝试创建一个简单的程序,从用户输入中获取两个数字并将它们相加。我已经记下了它的正确用法,但是如果用户输入了其他东西,比如字符串,我试图阻止崩溃。当我听说输入是不好的做法时,我如何能毫无例外地检查输入

理想情况下,我希望它只是重复最初的问题,要求输入一个数字。我想这是一个循环

询问用户第一个号码 如果不是int,请重复

询问用户第二个号码 如果不是int,请重复

做数学

编辑:所以到目前为止,我几乎已经得到了帮助。我使用了一些do-while循环来让它重复这个问题,直到输入是一个整数。但是现在,即使我输入一个整数,它仍会重复第一个while do循环。如果我输入某个内容!=整数它似乎跳到第二个,然后停止

编辑:新代码

import java.util.Scanner;

public class App {

    public static void main(String[] args) {

       Scanner scan;

    scan = new Scanner(System.in);
    int firstNumber = Integer.MIN_VALUE;
    int secondNumber = Integer.MIN_VALUE;

    do {
        System.out.print("Enter the first number to be added: ");
        if (scan.hasNextInt()) {
            firstNumber = scan.nextInt();
        }
    }
    while(firstNumber != Integer.MIN_VALUE);


    do {
        System.out.print("Enter the second number to be added: ");
        if (scan.hasNextInt()) {
            secondNumber = scan.nextInt();
        }
    }
    while(secondNumber != Integer.MIN_VALUE);

    if ((firstNumber != Integer.MIN_VALUE) && (secondNumber != Integer.MIN_VALUE)) {
        int sum = secondNumber + firstNumber;
        System.out.println("That equals: " + sum);
    }
    scan.close();
    }
}
旧代码

import java.util.Scanner;

public class calculate {
    private static Scanner scan;

    public static void main(String[] args) {

        scan = new Scanner(System.in);

        System.out.print("Enter the first number to be added: ");
        int firstNumber = scan.nextInt();

        System.out.println("Enter the second number to be added: ");
        int secondNumber = scan.nextInt();

        int sum = secondNumber + firstNumber;

        System.out.println("That equals: "+ sum);
    }
}
您只需使用:

if(scan.hasNextInt()) {//<-- get in if its a number
  int firstNumber = scan.nextInt();
}

如果(scan.hasNextInt()){/以下操作应该有效:

    Scanner scan;

    scan = new Scanner(System.in);
    int firstNumber = Integer.MIN_VALUE;
    int secondNumber = Integer.MIN_VALUE;

    while (firstNumber == Integer.MIN_VALUE) {
        System.out.print("Enter the first number to be added: ");
        if (scan.hasNextInt()) {
            firstNumber = scan.nextInt();
        } else {
            scan.next();
        }
    }

    while (secondNumber == Integer.MIN_VALUE) {
        System.out.print("Enter the second number to be added: ");
        if (scan.hasNextInt()) {
            secondNumber = scan.nextInt();
        } else {
            scan.next();
        }
    }

    if ((firstNumber != Integer.MIN_VALUE) && (secondNumber != Integer.MIN_VALUE)) {
        int sum = secondNumber + firstNumber;
        System.out.println("That equals: " + sum);
    }
    scan.close();

您可以使用“try catch”

   boolean flag=false;

   do
   {
       try
        {
         into firstno=scan.nesting();
         flag=true;
        }
          catch(Exception e)
             { 
             System.out.print("please insert only           number");
              }
      }while(flag!=true);

使用try-catch可以捕获异常和消息

最简单的方法是使用
try-catch
块。@YanFoto我对Java非常陌生,但我想我会去搜索try-catch。你应该捕获输入不匹配的异常不要编辑你的问题,使其与其他内容有关。这会使每个人的答案无效。如果需要,请问一个新问题你还是不明白。@Teepeemm第一段是编辑。还没有人回答我的问题。我会将编辑安排在底部。它说如果有新的信息要添加,编辑初始问题,而不是打开新问题更新我的问题以反映一些变化,有什么想法吗?