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

时间:2019-03-27 10:02:33

标签: java

我用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语句,该语句使用该整数进行计算,如果输入不是整数,那么我想弹出一条消息说“请确保您输入数字”。

更新

我添加了有人在注释中提出建议的方法,但是我不确定如何使其与我的代码相适应,因为它仍然告诉我值不是整数,因此我不能使用'<'。

3 个答案:

答案 0 :(得分:1)

摘自java.lang.Integer的文档:

  

抛出:
  NumberFormatException-如果字符串不包含可分析的整数。

因此只需捕获该异常,您就会知道String不包含可解析的整数。

int result;
try {
    result = Integer.parseInt(value);
}
catch (NumberFormatException e) {
    // value was not valid, handle here
}

答案 1 :(得分:1)

欢迎堆栈溢出。

您走在正确的道路上,但是您需要了解异常-当parseInt尝试解析不是整数的值时,它将引发异常。在Java中,我们可以捕获异常并对其进行处理(而不是让它终止程序的运行)。

对于您的情况,它看起来像这样:

try {
  int result = Integer.parseInt(value);           
  //Do your normal stuff as result is valid
}
catch (NumberFormatException e)
{
   // Show your message "Please only enter numbers"  
}
//Code continues from here in either case

答案 2 :(得分:1)

如果您想添加第三方库,可以使用StringUtils.isNumeric

如果您的用例足够简单,我可能会执行以下操作:

int intValue;
String value = "";
value = input.nextLine(); 
try {
    intValue = Integer.valueOf(value);
} catch (NumberFormatException e) {
    System.out.println("Please print only numbers!");
}