A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张振纲 中级黑马   /  2012-7-26 20:28  /  3144 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张振纲 于 2012-7-26 21:13 编辑

这是程序
这是报错

求解答,为什么提示缺少返回语句

程序搞定了
发出来大家指正下,觉得这个题满有意思
  1. /*
  2. 需求:编写一个程序假设今年大学学费为10000元,每年增长百分之五
  3. 请计算十年后的学费以及从今年算起四年后的学费

  4. 思路:定义一个函数 通过循环来计算递增的学费
  5. 再定义一个第三方变量来累加总的学费
  6. 最后打印输出结果即可
  7. */
  8. class pay
  9. {
  10. public static void getPay(int y)//定义一个函数用于计算增长的学费
  11. {
  12. double pay = 10000;
  13. double temp = 0;//定义一个变量来累加学费
  14. for (int x = 0; x < y ; x++ )
  15. {
  16. if ( x == 0)//第一年是一个特例不需要计算增长
  17. {
  18. pay=pay;
  19. System.out.print("每年的学费分别为"+" "+pay + " ");
  20. temp = pay;
  21. }
  22. else
  23. {
  24. pay = pay *1.05;
  25. System.out.print(pay + " ");
  26. temp = temp + pay;
  27. }
  28. }
  29. System.out.println();
  30. System.out.println("学费总和为 "+temp);
  31. }

  32. public static void main(String[] args)
  33. {
  34. getPay(10);
  35. getPay(4);
  36. }
  37. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

10 个回复

倒序浏览
不要else,直接写return sum;就不会报错,因为还有分支你没做处理,没有返回值,所以会报错。
回复 使用道具 举报
if和ifelse里面都没有返回语句。如果走到if或elseif中,那就没有返回值了,所以可以在else{return sum;}之后加个return
回复 使用道具 举报
首先这里不应用if。。else语句,因为 return sum是一定要有的 它和if中的语句不是选择关系。应该用for循环或者while循环。
class pay
{
        public static void main(String[] args)
        {
                System.out.println(getPay(10));
                System.out.println(getPay(4));
        }
        public static double getPay(int y)
        {
           double pay=10000;
           int x=0;
           double sum=pay;
           while (x<y)
           {
                   sum=sum*1.05;//这里,每年增加5%是在上年的基础上增加,而不是在第一年的基础上增加。
           x++;
           }
           return sum;//return语句一定要执行,所以写在循环语句外面。
               
        }
}
运行结果是
16288.9462
12155.0625
回复 使用道具 举报
赵方明 发表于 2012-7-26 21:08
首先这里不应用if。。else语句,因为 return sum是一定要有的 它和if中的语句不是选择关系。应该用for循环 ...

运算结果不对,题目意思是,学费每年依次递增5%
回复 使用道具 举报
依次递增就是在上年的基础上增加5%啊,sum=sum*1.05怎么不对了。
回复 使用道具 举报
赵方明 发表于 2012-7-26 21:12
依次递增就是在上年的基础上增加5%啊,sum=sum*1.05怎么不对了。

第一年的学费是一万
就算不增长,十年的学费也是十万
你十年算出来是16000+,怎么可能正确?
回复 使用道具 举报
赵方明 发表于 2012-7-26 21:12
依次递增就是在上年的基础上增加5%啊,sum=sum*1.05怎么不对了。

你只是计算出来,第十年和第四年该付多少学费,而不是学费的总和,题目要求的是学费总和
回复 使用道具 举报
尤洋 中级黑马 2012-7-26 22:03:11
9#
这题目看着给人感觉就是 第10年和第4年的学费,有些歧义.
顺便吐槽一句,真有可能把大学读10年么,读出来人都废了
回复 使用道具 举报
程序在编译时期,编译器是不运行代码的,它只是检查语法的对错,没有逻辑上的判断,即使你的if 和else已经考虑到了所有的情况还是会出现missing return的所以除了return出现在if和else语句中,在判断语句之外还要在加一个return语句。
回复 使用道具 举报
大学不可能读10年吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马