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



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

更新

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

来自java.lang.Integer的文档:

Throws:
NumberFormatException - 如果字符串不包含可解析的整数。

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

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

欢迎来到 Stack Overflow。

您走在正确的道路上,但您需要了解异常 - 当 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

如果你想添加一个第三方库,你可以使用StringUtils.isNumeric。

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

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

最新更新