利用Java写一个简单的计算器
其中有一些错误不知如何解决
并且只能对两个数进行运算
其中char s = sy.charAt(0)是借鉴别人的写法
获取输入的第一个字符就可以用switch多选择结构
但是输入的第一个字符为+后边不管跟什么字符都会进行加法运算
public static void main(String[] args) {
aa:for (;;) {
System.out.println("请输入需要进行‘+‘ ’-‘ ’*‘ ’/‘ 其中一种运算符");
Scanner scanner = new Scanner(System.in); //获取用户输入
String sy = scanner.next();//定义一个 String 保存用户输入
char s = sy.charAt(0);//令 s 为 用户输入的第一个字符
switch(s){ //switch 多选择结构
case'+'://如果 用户输入的第一个字符为+
System.out.println("您要进行加法运算"+"\n"+"请您输入第1个数");
double a1 = scanner.nextDouble();//数字a1等于用户输入的第一个数字
System.out.println("您输入第1个数为:"+a1+"\n"+"请您输入第2个数");
double b1 = scanner.nextDouble();
System.out.println("您输入第2个数为:"+b1);
double num1 = plus(a1,b1);//调用plus方法
System.out.println("您输入的2个数之和为:"+num1);
break;//防止case穿透
case'-':
System.out.println("您要进行减法运算"+"\n"+"请您输入第1个数");
double a2 = scanner.nextDouble();
System.out.println("您输入第1个数为:"+a2+"\n"+"请您输入第2个数");
double b2 = scanner.nextDouble();
System.out.println("您输入第2个数为:"+b2);
double num2 = reduce(a2,b2);
System.out.println("您输入的2个数之差为:"+num2);
break;
case'*'://double在做乘法时会丢失精度40.1*40.1
System.out.println("您要进行乘法运算"+"\n"+"请您输入第1个数");
double a3 = scanner.nextDouble();
System.out.println("您输入第1个数为:"+a3+"\n"+"请您输入第2个数");
double b3 = scanner.nextDouble();
System.out.println("您输入第2个数为:"+b3);
double num3=ride(a3,b3);
System.out.println("您输入的2个数之积为:"+num3);
break;
case'/'://double在做除法时会丢失精度9.9/3.3
System.out.println("您要进行除法运算"+"\n"+"请您输入第1个数");
double a4 = scanner.nextDouble();
System.out.println("您输入第1个数为:"+a4+"\n"+"请您输入第2个数");
double b4 = scanner.nextDouble();
System.out.println("您输入第2个数为:"+b4);
double num4 = except(a4,b4);
System.out.println("您输入的2个数之商为:"+num4);
break;
default:
System.out.println("违法字符");
}
if ( s != '+'&&s != '-'&&s != '*'&&s != '/'){
System.out.println("输入错误!!!");
System.out.println("是否重新输入 y/n");
String Y = scanner.next();
char YY = Y.charAt(0);
if(YY=='y'){
continue aa;
}else{
break;
}
}
System.out.println("==========================");
System.out.println("是否继续计算y/n");
String E = scanner.next();
char EE = E.charAt(0);
if(EE=='y'){
continue aa;
}else{
scanner.close();
break;
}
}
}
public static double plus (double a , double b ){
double P = a + b ;
return P;
}
public static double reduce (double a ,double b){
double R = a - b;
return R;
}
public static double ride (double a , double b ){
double Ri = a * b;
return Ri;
}
public static double except (double a , double b){
double E = a / b ;
return E;
}