import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in) ;
System.out.println("Enter your two numbers and the operation with spaces between e.g 8 9 -");
String calculation=scan.nextLine();
String [] parts = calculation.split(" ");
double part1 = Double.parseDouble(parts[0]);
double part2 = Double.parseDouble(parts[1]);
double answer = 0;
boolean incorrectOperation = false;
String operation = parts[2];
switch (operation) {
case "+":
answer = part1 + part2;
break;
case "-":
answer = part1 - part2;
break;
case "*":
answer = part1 * part2;
break;
case "/":
answer = part1 / part2;
break;
default:
incorrectOperation = true;
}
String ans;
if(incorrectOperation) {
ans = "Please use +, -, * or / for operation";
} else {
ans = String.valueOf(answer);
}
System.out.println(ans);
}
}
我使用拆分字符串帮助了解这个计算器,我想知道是否有人可以提供帮助,或者让我知道如何验证已经拆分的后修复表达式,该操作已经使用布尔验证了但是我需要知道我是否可以验证整数?
感谢
答案 0 :(得分:2)
如documentation中所述,您可以捕获NumberFormatException。 在这种情况下,您可以设置布尔值和错误消息。
例如:
double part1;
try {
part1 = Double.parseDouble(parts[0]);
} catch(NumberFormatException e) {
System.err.println("The first argument was not a number.");
System.exit(1);
}
答案 1 :(得分:1)
使用Integer.parseInt(myString)并将其包装在try / catch中,这样如果myString无效,则捕获异常。
答案 2 :(得分:0)
解析int数的标准方法是
public static int parseInt(String s) throws NumberFormatException
答案 3 :(得分:0)
您可以使用Scanner
方法hasNextDouble
检查下一个令牌是否可以作为double
读取,然后使用nextDouble
进行检索。< / p>