import java.util.Scanner;
class calculator{
int x;
int nn(int a,int b) {
switch(x) {
case 1:
System.out.println(a+"+"+b+"="+(a+b));
break;
case 2:
System.out.println(a+"+"+b+"="+(a-b));
break;
case 3:
System.out.println(a+"+"+b+"="+(a*b));
break;
case 4:
System.out.println(a+"+"+b+"="+(a/b));
break;
case 0:
break;
}
return nn(a,b);
}
}
public class Summer {
public static void main(String[] args) {
// TODO Auto-generated method stub
calculator ca=new calculator();
int fnum,snum;
int m;
Scanner s=new Scanner(System.in);
System.out.print("Enter fnum:");
fnum=s.nextInt();
System.out.print("Enter snum:");
snum=s.nextInt();
System.out.print("enter your choice:");
m=s.nextInt();
System.out.print(ca.nn(fnum,snum));
}
}
1、方法int nn(int a,int b) 中 你在最后写了 return nn(a,b);
这样变了成递归,而且还没有终止条件,最后就会溢出。
2、还是nn方法,定义了x,又没有赋值就直接用了,我看你代码,应该是要作为入参才对。
nn方法第一个参数值是计算类型。
class calculator{
double nn(int fnum, int a, int b) {
double x = 0;
switch (fnum) {
case 1:
System.out.println(a + "+" + b + "=" + (a + b));
x = a = b;
break;
case 2:
System.out.println(a + "+" + b + "=" + (a - b));
x = a - b;
break;
case 3:
System.out.println(a + "+" + b + "=" + (a * b));
x = a * b;
break;
case 4:
System.out.println(a + "+" + b + "=" + (double) (a / b));
x = (double) a / b
break;
case 0:
break;
}
return x;
}
}