我想写一个简单的计算器功能,使用主方法调用成员方法calculate,但是找不到错误
package test;import java.util.Scanner;
public class bin {
public static void main(String[] args) {
int a=calculate();
}
public static int calculate() {
Scanner in =new Scanner(System.in);
int a=in.nextInt();
char b=in.next().charAt(0);
int c=in.nextInt();
int e;
switch (b) {
case '+':
e=a+c;
return e;
case '-':
e=a-c;
return e;
case '*':
e=a*c;
return e;
case '/':
e=a/c;
return c;
case '%':
e=a%c;
return e;
}
}
}
没有输出吗? calculate方法没有返回值,且main方法里调用后没有输出结果,正确写法应该是这样public class bin {
public static void main(String[] args) {
int a = calculate();
System.out.println(a);
}
public static int calculate() {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
char b = in.next().charAt(0);
int c = in.nextInt();
int e;
switch (b) {
case '+':
e = a + c;
return e;
case '-':
e = a - c;
return e;
case '*':
e = a * c;
return e;
case '/':
e = a / c;
return e;
case '%':
e = a % c;
return e;
}
return 0;
}
} slience_缄默 发表于 2020-11-20 19:29
calculate方法没有返回值,且main方法里调用后没有输出结果,正确写法应该是这样
他那里return e 后不是结束了吗?还会运行后面的return 0??? 本帖最后由 slience_缄默 于 2020-11-21 19:46 编辑
dabinge 发表于 2020-11-20 22:25
他那里return e 后不是结束了吗?还会运行后面的return 0???
代码编译的时候判断到并没有在任何情况下都有返回值,所以报错了,比如你如果进入switch,但是没有找到对应的case呢?这个时候就执行完了switch却没有返回,而后面的代码没有返回值,就会报错。 dabinge 发表于 2020-11-20 22:25
他那里return e 后不是结束了吗?还会运行后面的return 0???
或者你case写完,public static int calculate() {
Scanner in =new Scanner(System.in);
int a=in.nextInt();
char b=in.next().charAt(0);
int c=in.nextInt();
int e;
switch (b) {
case '+':
e=a+c;
return e;
case '-':
e=a-c;
return e;
case '*':
e=a*c;
return e;
case '/':
e=a/c;
return c;
case '%':
e=a%c;
return e;
default:
return 0;
}
}这样也是可以的 slience_缄默 发表于 2020-11-21 19:44
或者你case写完,这样也是可以的
好的谢谢
页:
[1]