用面向对象方法写一个计算器遇到两个错误,第一个错误是堆return 理解不到位,还有一个是对字符串进行比较的时候==和equals()的使用。不多说直接上代码:
//实现计算方法
double calculate(){
if(sign=='+'){
rerurn number1+number2;
}else if(sign=='-'){
return number1-number2;
}else if(sign=='*'){
return number1*number2;
}else{
return number1/number2;
}
esc()
}
上正确代码:
```java
//实现计算方法
double calculate(){
if(sign=='+'){
result=number1+number2;
}else if(sign=='-'){
result=number1-number2;
}else if(sign=='*'){
result=number1*number2;
}else{
result=number1/number2;
}
return result;
}
由于esc()方法上面有return,所以return后面的代码不执行,因此这里会报错。
另一个bug,看代码,这个在字符串比较的时候,习惯性的直接用了==,不会报错,会导致执行结果不对,以为逻辑出问题了。改为equals()就好了,直接上正确代码,错误的就不写了(错误的代码写的是在判断的时候写的str==“是”,和str==“否”)。
//退出方法
void esc(){
System.out.println("是否继续?");
Scanner sc2=new Scanner(System.in);
String str=sc2.next();
if(str.equals("是")){
reset=true;
}else if(str.equals("否")){
reset=false;
System.out.println("退出");
}else{
System.out.println("输入有误,请重新输入");
}
}