dabinge 发表于 2020-11-20 16:25:33

我想写一个简单的计算器功能,使用主方法调用成员方法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;
                                }
        }
}

一枚丶学渣 发表于 2020-11-20 17:13:21

没有输出吗?

slience_缄默 发表于 2020-11-20 19:29:50

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;
    }
}

dabinge 发表于 2020-11-20 22:25:01

slience_缄默 发表于 2020-11-20 19:29
calculate方法没有返回值,且main方法里调用后没有输出结果,正确写法应该是这样

他那里return e 后不是结束了吗?还会运行后面的return 0???

slience_缄默 发表于 2020-11-21 19:41:27

本帖最后由 slience_缄默 于 2020-11-21 19:46 编辑

dabinge 发表于 2020-11-20 22:25
他那里return e 后不是结束了吗?还会运行后面的return 0???

代码编译的时候判断到并没有在任何情况下都有返回值,所以报错了,比如你如果进入switch,但是没有找到对应的case呢?这个时候就执行完了switch却没有返回,而后面的代码没有返回值,就会报错。

slience_缄默 发表于 2020-11-21 19:44:58

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;
      }
    }这样也是可以的

dabinge 发表于 2020-11-22 13:27:14

slience_缄默 发表于 2020-11-21 19:44
或者你case写完,这样也是可以的

好的谢谢
页: [1]
查看完整版本: 我想写一个简单的计算器功能,使用主方法调用成员方法calculate,但是找不到错误