显示错误消息而不是异常

时间:2014-05-30 07:06:56

标签: java error-handling

我正在尝试制作一个从用户那里获取号码的程序,并检查号码是否为素数。我在考虑错误处理。当用户输入字符串时,程序应该给出错误消息而不是异常。我尝试了很多方法但是没有成功。你能帮助我吗?

import java.util.Scanner;

public class PrimeNumber {

  public static void main(String[] args) {

    Scanner input =  new Scanner(System.in);
    int inputNum;
    int remainingNum;
    System.out.println("Enter a number: ");

    inputNum = input.nextInt();

    if(inputNum < 0){      
      System.out.println("Please enter a possitive number.");      
    }

    for(int i = 2; i<=inputNum; i++) {

      remainingNum = inputNum % i;

      if(remainingNum == 0){
        System.out.println("This number is not a prime number.");
        break;
      }
      if(remainingNum == 1){
        System.out.println("This is a prime number!");
        break;
      }
    }
  }
}

4 个答案:

答案 0 :(得分:3)

如果用户输入非整数输入,则此行

inputNum = input.nextInt();

将抛出异常(InputMismatchException)。 Java 处理异常的方式是通过try-catch块:

try {
    inputNum = input.nextInt();
    // ... do domething with inputNum ...
} catch (InputMismatchException e) {
    System.out.println("Invalid input!");
}

注意:如果您想了解有关例外的更多信息(您必须),请阅读Java tutorials

答案 1 :(得分:0)

将它放在try-catch中,然后在catch子句中发生异常时打印你的消息......简单的事情

答案 2 :(得分:0)

如果你需要先检查输入,如果是一个数字检查是否为素数,如果它是无效的,则提示用户输入另一个输入,直到他输入有效输入为止。试试这个。

          String inputString;
            boolean isValid = false;

            while(isValid == false){
            //sysout for input 
            inputString = input.nextLine(); 

            if(inputString.matches("[0-9]+")){

                // check for prime
                isValid = true;

            }else{

           //printin error
               }

            }
        }

答案 3 :(得分:0)

感谢每一位特别是基督徒。这是最新的代码。

import java.util.InputMismatchException; import java.util.Scanner;

公共类PrimeNumber {

public static void main(String[] args) {






    try {
        Scanner input =  new Scanner(System.in);
        int inputNum;
        int remainingNum;
        System.out.println("Enter a number: ");

        inputNum = input.nextInt();

    for(int i = 2; i<=inputNum; i++) {

            remainingNum = inputNum % i;



            if(remainingNum == 0){
                System.out.println("This number is not a prime number.");
                break;


            }


            if(remainingNum == 1){
                System.out.println("This is a prime number!");
                break;
            }


        }


    } 
    catch (InputMismatchException e) {
        System.out.println("Invalid input!");
    }









}



}