从Java与扫描仪用户只接受数字(Java accepting only numbers from

2019-10-29 07:10发布

我想了解如何只接受来自用户的号码,我试图这样做使用try catch块,但我仍然会得到错误吧。

    Scanner scan = new Scanner(System.in);

    boolean bidding;
    int startbid;
    int bid;

    bidding = true;

    System.out.println("Alright folks, who wants this unit?" +
            "\nHow much. How much. How much money where?" );

    startbid = scan.nextInt();

try{
    while(bidding){
    System.out.println("$" + startbid + "! Whose going to bid higher?");
    startbid =+ scan.nextInt();
    }
}catch(NumberFormatException nfe){

        System.out.println("Please enter a bid");

    }

我想了解为什么它不工作。

我测试了它通过输入到控制台,我会收到一个错误,而不是希望“请参加投标”的决议。

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Auction.test.main(test.java:25)

Answer 1:

虽然使用Scanner.nextInt()它会导致一些问题。 当您使用Scanner.nextInt()它不消耗新线(或其他分隔符)本身那么返回的下一个标记通常是一个空字符串。 因此,你需要用遵循它Scanner.nextLine() 您可以放弃的结果。

这是因为这个原因,我建议您还是使用nextLine (或BufferedReader.readLine()使用后做解析Integer.parseInt() 您的代码应该如下。

        Scanner scan = new Scanner(System.in);

        boolean bidding;
        int startbid;
        int bid;

        bidding = true;

        System.out.print("Alright folks, who wants this unit?" +
                "\nHow much. How much. How much money where?" );
        try
        {
            startbid = Integer.parseInt(scan.nextLine());

            while(bidding)
            {
                System.out.println("$" + startbid + "! Whose going to bid higher?");
                startbid =+ Integer.parseInt(scan.nextLine());
            }
        }
        catch(NumberFormatException nfe)
        {
            System.out.println("Please enter a bid");
        }


Answer 2:

尝试捕捉抛出的异常,而不是类型NumberFormatExceptionInputMismatchException )。



Answer 3:

该消息是很清楚的: Scanner.nextInt()抛出InputMismatchException ,但你的代码捕获NumberFormatException 。 抓住适当的异常类型。



文章来源: Java accepting only numbers from user with Scanner