鱼C论坛

 找回密码
 立即注册
查看: 4845|回复: 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写完,
  1. public static int calculate() {
  2.         Scanner in =new Scanner(System.in);
  3.         int a=in.nextInt();
  4.         char b=in.next().charAt(0);
  5.         int c=in.nextInt();
  6.         int e;
  7.         switch (b) {
  8.             case '+':
  9.                 e=a+c;
  10.                 return e;
  11.             case '-':
  12.                 e=a-c;
  13.                 return e;
  14.             case '*':
  15.                 e=a*c;
  16.                 return e;
  17.             case '/':
  18.                 e=a/c;
  19.                 return c;
  20.             case '%':
  21.                 e=a%c;
  22.                 return e;
  23.             default:
  24.                 return 0;
  25.         }
  26.     }
复制代码
这样也是可以的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-20 17:13:21 | 显示全部楼层
没有输出吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-20 19:29:50 | 显示全部楼层
calculate方法没有返回值,且main方法里调用后没有输出结果,正确写法应该是这样
  1. public class bin {

  2.     public static void main(String[] args) {
  3.         int a = calculate();
  4.         System.out.println(a);
  5.     }

  6.     public static int calculate() {
  7.         Scanner in = new Scanner(System.in);
  8.         int a = in.nextInt();
  9.         char b = in.next().charAt(0);
  10.         int c = in.nextInt();
  11.         int e;
  12.         switch (b) {
  13.             case '+':
  14.                 e = a + c;
  15.                 return e;
  16.             case '-':
  17.                 e = a - c;
  18.                 return e;
  19.             case '*':
  20.                 e = a * c;
  21.                 return e;
  22.             case '/':
  23.                 e = a / c;
  24.                 return e;
  25.             case '%':
  26.                 e = a % c;
  27.                 return e;
  28.         }
  29.         return 0;
  30.     }
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

他那里return e 后不是结束了吗?还会运行后面的return 0???
小甲鱼最新课程 -> https://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却没有返回,而后面的代码没有返回值,就会报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-21 19:44:58 | 显示全部楼层    本楼为最佳答案   
dabinge 发表于 2020-11-20 22:25
他那里return e 后不是结束了吗?还会运行后面的return 0???

或者你case写完,
  1. public static int calculate() {
  2.         Scanner in =new Scanner(System.in);
  3.         int a=in.nextInt();
  4.         char b=in.next().charAt(0);
  5.         int c=in.nextInt();
  6.         int e;
  7.         switch (b) {
  8.             case '+':
  9.                 e=a+c;
  10.                 return e;
  11.             case '-':
  12.                 e=a-c;
  13.                 return e;
  14.             case '*':
  15.                 e=a*c;
  16.                 return e;
  17.             case '/':
  18.                 e=a/c;
  19.                 return c;
  20.             case '%':
  21.                 e=a%c;
  22.                 return e;
  23.             default:
  24.                 return 0;
  25.         }
  26.     }
复制代码
这样也是可以的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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