我用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语句,该语句使用该整数进行计算,如果输入不是整数,那么我想弹出一条消息说“请确保您输入数字”。
更新
我添加了有人在注释中提出建议的方法,但是我不确定如何使其与我的代码相适应,因为它仍然告诉我值不是整数,因此我不能使用'<'。
答案 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!");
}