如何允许我的程序根据用户输入的类型执行某些操作?

我已经用Java创建了一个“汽车金融”计算器,但是我想确保不仅涵盖了快乐的道路。当用户输入字符串时,程序将退出,因为它需要一个整数。然后我想,如果我将输入设置为字符串,然后将其转换为整数,但是我只希望在输入被识别为整数的情况下进行此转换...如果这有意义的话。


if(a.equalsIgnoreCase("Blue Car")) {

        System.out.println("This car is £9,000");

        Scanner input = new Scanner(System.in);

        System.out.println("Please type in your deposit amount."); 


        String value = "";

        int intValue;

        value = input.nextLine(); 

        try {

        intValue = Integer.valueOf(value);

        } catch (NumberFormatException e) {

        System.out.println("Please print only numbers!");

        }           



        if(value < 9000) {

        System.out.println("The price of the car after your deposit is: " + (9000 - intValue)); 


        System.out.println("Please confirm the left over price after your deposit by typing it in.");

        int value1 = 0;

        value1 = input.nextInt();

        System.out.println("How long would you like the finance to be?"); 

        System.out.println("12 Months, 24 Months, 36 Months, 48 Months");

        System.out.println("Please type either 12, 24, 36 etc"); 

        int value2 = 0;

        value2 = input.nextInt();

        System.out.println("You will be paying " + value1 / value2 + " pounds a month!"); }

        else if(value.equalsIgnoreCase ("")){

            System.out.println("Please only enter numbers.");

        }


        else {

            System.out.println("Great - you can pay the car in full!");

            chooseOption = true; 

        }

我尝试使用parseInt,但是我只希望在输入数字时发生parseInt。


我希望我的程序能够识别用户输入是否是整数,然后执行if/else语句,该语句使用该整数进行计算,如果输入不是整数,那么我希望弹出一条消息,说“请确保您输入数字”。


更新


我已经添加了某人在评论中建议的方法,但我不确定如何将其与我拥有的代码相匹配,因为它仍然告诉我值不是整数,因此我无法使用“<”。


慕勒3428872
浏览 74回答 3
3回答

紫衣仙女

欢迎来到堆栈溢出。您正好在正确的路径上,但您需要了解异常 - 当parseInt尝试解析不是整数的值时,它会引发异常。在Java中,我们可以捕获和异常并处理它(而不是让它杀死程序的运行)。对于您的情况,它看起来像这样:try {&nbsp; int result = Integer.parseInt(value);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; //Do your normal stuff as result is valid}catch (NumberFormatException e){&nbsp; &nbsp;// Show your message "Please only enter numbers"&nbsp;&nbsp;}//Code continues from here in either case

慕仙森

来自以下文档:java.lang.IntegerThrows:NumberFormatException - 如果字符串不包含可解析整数。因此,只需捕获该异常,您就会知道字符串不包含可解析整数。int result;try {&nbsp; &nbsp; result = Integer.parseInt(value);}catch (NumberFormatException e) {&nbsp; &nbsp; // value was not valid, handle here}

慕斯709654

您可以使用StringUtils.isNumeric,如果你想添加一个第三方库。如果你的用例足够简单,我可能会这样做:int intValue;String value = "";value = input.nextLine();&nbsp;try {&nbsp; &nbsp; intValue = Integer.valueOf(value);} catch (NumberFormatException e) {&nbsp; &nbsp; System.out.println("Please print only numbers!");}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java