public class HomeworkDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double result = 0;
while (scanner.hasNextDouble()) {
double i = scanner.nextDouble();
String str = scanner.next();
double j = scanner.nextDouble();
switch (str) {
case "+":
result = add(i, j);
System.out.println(result);
break;
case "-":
result = minus(i, j);
System.out.println(result);
break;
case "*":
result = multiply(i, j);
System.out.println(result);
break;
case "/":if(j==0){
System.out.println("除数不能为零");
break;
}else
result = divide(i, j);
System.out.println(result);
break;
}if (str.equals("quit")){
System.out.println("退出计算器");
break;
}
}scanner.close();
}
//加
public static double add ( double a , double b){
return a + b;
}//减
public static double minus ( double a , double b){
return a - b;
}//乘
public static double multiply ( double a , double b){
return a * b;
}//除
public static double divide ( double a , double b){
return a / b;
}
}
遇到的问题:1. 把scanner.hasNext作为while的布尔表达式,导致输入新的一组待运算数据时,无法给第一个数赋值,而是直接跳到scanner.hasNext的判定。所以把while的布尔表达式更改为scanner.hasNextDouble
2. 除数为零时,不仅输出“除数不能为零”,还输出了一开始给以result的赋值0,添加break;后解决问题。
3. 使用分步解决的思想,能够做出一个做加法运算的计算器,也能做出能够四则运算的计算器。