Java-Try和Catch语句

时间:2017-05-18 18:37:48

标签: java

我刚开始用java写一个二十一点游戏。我试图让程序要求用户再次输入,如果他们输入的现金开头不是有效整数。我看到许多带catch的try语句的例子,但是没有一个是有用的。程序给出的错误InputMismatchException无法解析为类型。我遵循的一个线程就是这个,我有完全相同的代码,只是不同的变量名。这里是。 Java InputMismatchException

这是我的代码:

        Scanner input_var=new Scanner(System.in);
        System.out.println("Welcome to BlackJack!");
        System.out.println("Enter how much money you will start with");
        System.out.println("Starting cash must be whole number");
        int money=0;
        do{

        try{
            System.out.println("Enter how much money you will start with: ");
            money=input_var.nextInt();
            }

        catch (InputMismatchException e){
            System.out.println("Sry, not a valid integer");
            input_var.nextInt();
        }
        input_var.nextLine();
        }while (money<=0);

为什么我的几乎所有代码都不起作用的任何帮助将不胜感激。感谢您的时间和精力。

4 个答案:

答案 0 :(得分:2)

使用input.next()消费,因为input.nextInt()不存在。这就是例外的全部内容。

do{
    try{
        System.out.println("Enter how much money you will start with: ");
        money=input_var.nextInt();
    }catch (InputMismatchException e){
        System.out.println("Sry, not a valid integer");
        input_var.next();
    }
}while (money<=0);

答案 1 :(得分:1)

您可以在while循环中使用hasNextInt()。虽然下一个输入不是整数,但显示&#34;不是有效整数&#34;消息并获取下一个输入。当它是一个整数时,while循环将会中断,你可以做你需要做的事情。

答案 2 :(得分:1)

从try语句和input_var.nextInt();中删除input_var.nextLine();。 必须有像import java.util.*import java..util.InputMismatchException这样的导入。

您使用的是哪个IDE?

答案 3 :(得分:1)

也许您正在寻找NumberFormatExcpetion?它是将字符串转换为数字时抛出的内容。试着这样做:

    Scanner input_var=new Scanner(System.in);
    System.out.println("Welcome to BlackJack!");
    System.out.println("Enter how much money you will start with");
    System.out.println("Starting cash must be whole number");
    int money=0;

    do {
        try {
            System.out.println("Enter how much money you will start with: ");
            money = Integer.parseInt(input_var.next());

        }
        catch(NumberFormatException e) {
            System.out.println("Sry, not a valid integer");
            input_var.next();
        }

        input_var.next();

    } while (money<=0);