如何在java中获得同时具有int选项或char选项(包括scanner)的switch语句 如何让用户为选择输入字符或数字?
我应该使用什么类型的扫描仪,或者我应该创建多个扫描仪 现在代码可以处理任何数字,但当我输入一个字符时,会出现语法错误。任何想法或建议都会有帮助如何在java中获得同时具有int选项或char选项(包括scanner)的switch语句 如何让用户为选择输入字符或数字?,java,char,int,switch-statement,java.util.scanner,Java,Char,Int,Switch Statement,Java.util.scanner,我应该使用什么类型的扫描仪,或者我应该创建多个扫描仪 现在代码可以处理任何数字,但当我输入一个字符时,会出现语法错误。任何想法或建议都会有帮助 public class Calc2 { private static void Menu(){ // print introduction System.out.println("Calculator"); } private static void Choice(){ //
public class Calc2 {
private static void Menu(){
// print introduction
System.out.println("Calculator");
}
private static void Choice(){
// give 4 different calculations + a way to exit
System.out.println("\nChoose which type of operation you want to do.");
System.out.println("1. Addition");
System.out.println("2. Subtraction");
System.out.println("3. Multiplication");
System.out.println("4. Division");
System.out.println("5. Exit");
}
private static float Addition(){
//Addition method
System.out.println("Choose your first number");
Scanner input = new Scanner(System.in);
float num1 = input.nextFloat();
System.out.println("Choose your second number");
Scanner input1 = new Scanner(System.in);
float num2 = input1.nextFloat();
float num3 = num1 + num2;
System.out.printf("%f + %f = %f", num1, num2, num3);
return num3;
}
private static float Subtraction(){
//Subtraction method
System.out.println("Choose your first number");
Scanner input = new Scanner(System.in);
float num1 = input.nextFloat();
System.out.println("Choose your second number");
Scanner input1 = new Scanner(System.in);
float num2 = input1.nextFloat();
float num3 = num1 - num2;
System.out.printf("%f - %f = %f", num1, num2, num3);
return num3;
}
private static float Multiplication(){
// multiplication method
System.out.println("Choose your first number");
Scanner input = new Scanner(System.in);
float num1 = input.nextFloat();
System.out.println("Choose your second number");
Scanner input1 = new Scanner(System.in);
float num2 = input1.nextFloat();
float num3 = num1 * num2;
System.out.printf("%f X %f = %f", num1, num2, num3);
return num3;
}
private static float Division(){
// division method
System.out.println("Choose your first number");
Scanner input = new Scanner(System.in);
float num1 = input.nextFloat();
System.out.println("Choose your second number");
Scanner input1 = new Scanner(System.in);
float num2 = input1.nextFloat();
float num3 = num1 / num2;
System.out.printf("%f / %f = %f", num1, num2, num3);
return num3;
}
private static void Exit(){
System.out.println("Thank you for using Gaurav's Calculator");
System.exit(0);
}
public static void main(String[] args) {
Menu();
int input1;
// call on the menu and choices
do{
Choice();
Scanner operator = new Scanner(System.in);
input1 = operator.nextInt();
// get user input for what type of calculation
// switch case to call on a method based on users choice of calculation
switch(input1){
case 1:
case 'a':
case 'A':
Addition();
break;
case 2:
case 's':
case 'S':
Subtraction();
break;
case 3:
case 'M':
case 'm':
Multiplication();
break;
case 4:
case 'D':
case 'd':
Division();
break;
case 5:
case 'e':
case 'E':
Exit();
break;
default:
System.out.println("You chose a wrong number");
}
}while ( input1 !=5);
}
}
从
扫描仪读入一个字符
并使用
switch(input1) {
case '1': case 'a': case 'A': Addition(); break;
...
}
您必须读入一个字符(或者更确切地说是字符串的第一个字符) 然后可以在以下情况下测试该字符:
case '1': case 'a': case 'A'
您的问题是,您正在读取的下一个输入仅为int。
尝试这样做:
String reply = input.next(Pattern.compile("[1-5aAsSmMdDeE]"));
int input1;
try {
input1 = Integer.parseInt(reply);
} catch (NumberFormatingException e) {
input1 = reply.charAt(0);
}
享受。我必须在字符中输入1吗?@user3117328从技术上讲,你不必(
int
大于char
),但你可能应该这样做。如果可能的话,不应该使用异常来实现应用程序的逻辑。这被认为是有害的。在OP的例子中,他甚至不需要将它转换成整数。@cds,我不同意这种说法。异常是java编码的有效范例。@user2318564,这并不意味着您应该使用它们来处理应用程序逻辑。您不应该依赖于抛出异常的对象作为流的一部分。
String reply = input.next(Pattern.compile("[1-5aAsSmMdDeE]"));
int input1;
try {
input1 = Integer.parseInt(reply);
} catch (NumberFormatingException e) {
input1 = reply.charAt(0);
}