要求仅插入数字

时间:2018-05-31 13:12:21

标签: java

所以我试图制作一个简单的计算器。

当我输入第一个数字时,如何进行,但如果我插入" abc"它会给我一个错误。

当你写作时,我如何按顺序制作" abc"说"请输入一个号码"

import java.util.Scanner;

public class calculator 
{
    public static void main(String[] args0) {
        Scanner test = new Scanner(System.in);

        int  x; 
        int  y;
        String  c;

        System.out.println("Insert a number ");
        x = test.nextInt();

        System.out.println("insert a value e.g * / + -");
        c = test.next();

        System.out.println("Insert another number");
        y = test.nextInt();

        if ( c.equals("*")) {
            System.out.println("the total is " + x*y);
        } 

        if (c.equals("+")) {
            System.out.println("the total is " + (x+y));

        }

        if (c.equals("-")) {
            System.out.println("the total is "+ (x-y));
        }

        if (c.equals("/")) {
            System.out.println("the total is "+ (x/y));
        }

    }
}

5 个答案:

答案 0 :(得分:5)

您可以使用扫描仪属性Scanner.hasNextInt()

验证输入,直到成为int
Scanner scanner = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!scanner.hasNextInt()) scanner.next();

示例:

public static void main(String[] args0) {
        Scanner test = new Scanner(System.in);

        int  x; 
        int  y;
        String  c;

        System.out.println("Insert a number ");
        while (!test .hasNextInt()) test .next(); // Scanner Validation
        int x = test .nextInt();

}

Scanner

的JavaDoc

答案 1 :(得分:0)

您得到的错误是个例外。你实际上可以“捕获”你的异常,这样当它们出现时,你的程序不会中断,你可以做那个错误的原因(输出“请插入,只插入数值”反馈?)

您可以在try-catch blocks

找到有关try-catch块的一些信息

答案 2 :(得分:0)

试试这个:

boolean success = false;
while (!success) {
    try {
        y = test.nextInt();
        success = true;
    } catch (InputMismatchException e) {
        test.nextLine();
        System.out.println("Please enter a number.");
    }
}

答案 3 :(得分:0)

如果您愿意接受doubles而不是ints,则java双打有一个内置方法isNaN(),其中NaN代表非数字。

if (Double.isNaN(doubleValue)) {
    ...
}

答案 4 :(得分:0)

试试这个:

public static void main(String[] args) {
        // TODO Auto-generated method stub
         Scanner test = new Scanner(System.in);

            int  x; 
            int  y;
            String  c;

            try {
                System.out.println("Insert a number ");
                x = test.nextInt();

                System.out.println("insert a value e.g * / + -");
                c = test.next();

                System.out.println("Insert another number");
                y = test.nextInt();

                if (c.equals("*")) {
                    System.out.println("the total is " + x*y);
                } 

                if (c.equals("+")) {
                    System.out.println("the total is " + (x+y));
                }

                if (c.equals("-")) {
                    System.out.println("the total is "+ (x-y));
                }

                if (c.equals("/")) {
                    System.out.println("the total is "+ (x/y));
                }

            } catch(InputMismatchException e) {
                System.out.println("Please enter correct values.");
            }

    }

<强>修改:

  1. 由于输入类型错误,您获得的错误称为RunTime Error or Exceptions。要处理RunTime Exceptions,您需要使用try and catch block

  2. try and catch blocks用于处理RunTime Exceptions。如果在try块中发生任何错误或异常,那么将抛出catch块来处理而不是终止你的程序。