鱼C论坛

 找回密码
 立即注册
查看: 4231|回复: 6

[已解决]我想写一个简单的计算器功能,使用主方法调用成员方法calculate,但是找不到错误

[复制链接]
发表于 2020-11-20 16:25:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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-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;
        }
    }
这样也是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-20 17:13:21 | 显示全部楼层
没有输出吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-20 22:25:01 | 显示全部楼层
slience_缄默 发表于 2020-11-20 19:29
calculate方法没有返回值,且main方法里调用后没有输出结果,正确写法应该是这样

他那里return e 后不是结束了吗?还会运行后面的return 0???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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却没有返回,而后面的代码没有返回值,就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
        }
    }
这样也是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-22 13:27:14 | 显示全部楼层
slience_缄默 发表于 2020-11-21 19:44
或者你case写完,这样也是可以的

好的谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 00:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表