我正在制作一个程序,用户输入两个双打和一个操作符,并执行计算。例如,如果用户输入" 12 - 6",结果将为6.如果用户输入" 12 6 - ",它也可以工作。我正在尝试创建一个错误检查,检查是否有足够的令牌或太多的令牌。我该怎么做?
double num1, num2;
String operator ;
DecimalFormat decPattern = new DecimalFormat("#.00");
System.out.println("");
Scanner scan = new Scanner(System.in);
System.out.print("Please enter two operands and an operator > ");
if (scan.hasNextDouble())
{
num1 = scan.nextDouble();
if (scan.hasNextDouble())
{
num2 = scan.nextDouble();
operator = scan.next();
scan.close();
}
else
{
operator = scan.next();
num2 = scan.nextDouble();
scan.close();
}
}
else
{
operator = scan.next();
num1 = scan.nextDouble();
num2 = scan.nextDouble();
scan.close();
}
System.out.println("");
calc(operator, num1, num2);
}
答案 0 :(得分:0)
您不必使用Scanner
,您可以利用Reader
界面实施检查:
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
String line = reader.readLine();
StringTokenizer tokenizer = new StringTokenizer(line);
if (tokenizer.countTokens() != 3) {
System.err.println("Wrong number of arguments");
}
while (tokenizer.hasMoreTokens()) {
// Work with tokens
}
} catch (IOException e) {
e.printStackTrace();
}
更新(以满足教师要求)
相同,但Scanner
:
try(Scanner scanner = new Scanner(System.in)) {
String line = scanner.nextLine();
StringTokenizer tokenizer = new StringTokenizer(line);
if (tokenizer.countTokens() != 3) {
System.err.println("Wrong number of arguments");
}
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
// Work with tokens
}
}