我是新来的Java。我希望能够在扫描仪中输入操作字符。字符使用扫描仪
我的代码应该产生以下,
- 输入两个数字:13 6
- 什么操作? *
- 什么是13 * 6? 78
- 正确!
我使用switch语句来存储可用于用户的操作。 这些是:+, - ,*和/。
我收到一个运行时间错误,每次我输出后写操作。
import java.util.Scanner;
public class Användardialog4 {
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int svar;
String op;
char operator;
System.out.println("Enter two numbers: ");
int tal = sc.nextInt();
int tal2 = sc.nextInt();
System.out.println("Operation?");
op = sc.nextLine();
operator = op.charAt(0);
switch(operator){
case '+':
System.out.println("What is "+tal+" + "+tal2);
svar = sc.nextInt();
if (svar == tal+tal2)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is: "+tal+tal2);
break;
case '*':
System.out.println("What is "+tal+" * "+tal2);
svar = sc.nextInt();
if (svar ==tal*tal2)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is: "+tal*tal2);
break;
case '-':
System.out.println("What is "+tal+" - "+tal2);
svar = sc.nextInt();
if (svar == tal-tal2)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is: "+(tal-tal2));
break;
case '/':
System.out.println("What is "+tal+"/"+tal2);
svar = sc.nextInt();
if (svar == tal/tal2)
System.out.println("Correct!");
else
System.out.println("Wrong - The right answer is: "+tal/tal2);
break;
}
}
}
运行时间错误我得到的是:
Exception in thread "main" java.util.InputMismatchException at
java.util.Scanner.throwFor(Unknown Source) at
java.util.Scanner.next(Unknown Source) at
java.util.Scanner.nextInt(Unknown Source) at
java.util.Scanner.nextInt(Unknown Source) at
Användardialog4.main(Dialog4.java:16)
所以我的问题是,我怎么在Scanner类使用字符? 是不是有nextChar();或者类似于Java的东西?
这不是一个编译器错误,这是一个运行时异常。看起来问题是你要求一个int并且它看到的下一个标记不是int。 – Kevin
不是回应,只是旁观:如果您使用的是Java 5+,我建议使用“枚举”来提供操作功能。它会更整洁。 – DPM