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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杜光 于 2013-7-30 10:26 编辑

先上代码

  1. <P>abstract class TV
  2. {
  3. public abstract void money(int money);
  4. public void notice()
  5. {
  6.   System.out.println("当你缴纳100元即可成为初级付费用户,当你缴纳200元即可成为中级级付费用户,当你缴纳500元即可成为高级级级付费用户");
  7. }
  8. }</P>
  9. <P>class NormalUser extends TV
  10. {
  11. public void money(int money)
  12. {
  13.   if(money == 0)
  14.   System.out.println("你是......普通用户,只能收看新闻联播。。。");
  15.   System.out.println("");
  16. }
  17. }</P>
  18. <P>class PayingUser extends TV
  19. {
  20. public void money(int money)
  21. {
  22.   switch(money)
  23.   {
  24.    case 100:System.out.println("你是......初级付费用户,可以点播电影。。。");
  25.    case 200:System.out.println("你是......中级付费用户,可以点播连续剧。。。");
  26.    case 500:System.out.println("你是......高级付费用户,可以点播黑马程序员视频。。。");
  27.   }
  28. }</P>
  29. <P>
  30. }</P>
  31. <P>class abstractDemo
  32. {
  33. public static void main(String[] args)
  34. {
  35.   NormalUser nu = new NormalUser();
  36.   nu.notice();
  37.   nu.money(0);
  38.   PayingUser pu = new PayingUser();
  39.   pu.money(100);
  40.   pu.money(200);
  41.   pu.money(500);
  42.   
  43. }
  44. }</P>
复制代码
为什么我的打印结果是

怎么会重复了1个中级2个高级哦
明明都只调用一次啊

12 个回复

倒序浏览
每个case选项中,都加入break就好了。
switch语句中,如果选中一个选项后执行结束不加break,则会顺序向下执行。
回复 使用道具 举报
思想很好啊
都开始Thinking in Java了
正确代码:
  1. package qbb;

  2. abstract class TV
  3. {
  4.         public abstract void money(int money);
  5.         public void notice()
  6.         {
  7.                 System.out.println("当你缴纳100元即可成为初级付费用户" + "\n" +
  8.                                 "当你缴纳200元即可成为中级级付费用户" + "\n" +
  9.                                 "当你缴纳500元即可成为高级级级付费用户");
  10.         }
  11. }
  12. class NormalUser extends TV
  13. {
  14.         public void money(int money)
  15.         {
  16.                 if(money == 0)
  17.                         System.out.println("你是......普通用户,只能收看新闻联播。。。");
  18.                 System.out.println("");
  19.         }
  20. }
  21. class PayingUser extends TV
  22. {
  23.         public void money(int money)
  24.         {
  25.                 switch(money)
  26.                 {
  27.                 case 100:
  28.                         System.out.println("你是......初级付费用户,可以点播电影。。。");
  29.                         break;
  30.                 case 200:
  31.                         System.out.println("你是......中级付费用户,可以点播连续剧。。。");
  32.                         break;
  33.                 case 500:
  34.                         System.out.println("你是......高级付费用户,可以点播黑马程序员视频。。。");
  35.                 }
  36.         }

  37. }
  38. public class AbstractDemo
  39. {
  40.         public static void main(String[] args)
  41.         {
  42.                 NormalUser nu = new NormalUser();
  43.                 nu.notice();
  44.                 nu.money(0);
  45.                 PayingUser pu = new PayingUser();
  46.                 pu.money(100);
  47.                 pu.money(200);
  48.                 pu.money(500);
  49.         }
  50. }
复制代码
运行结果:
当你缴纳100元即可成为初级付费用户
当你缴纳200元即可成为中级级付费用户
当你缴纳500元即可成为高级级级付费用户
你是......普通用户,只能收看新闻联播。。。

你是......初级付费用户,可以点播电影。。。
你是......中级付费用户,可以点播连续剧。。。
你是......高级付费用户,可以点播黑马程序员视频。。。

我用eclipse运行的,你换成DOS应该也一样
问题出在是Switch语句块中,
除了最后一个case,
一般情况下,每个一case后都要加break,不然会一直执行下去
另外对代码做来了一下优化,嘿嘿

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
  1. <abstract class TV
  2. {
  3.        
  4. public abstract void money(int money);

  5. public void notice()
  6. {
  7.   System.out.println("当你缴纳100元即可成为初级付费用户,当你缴纳200元即可成为中级级付费用户,当你缴纳500元即可成为高级级级付费用户");
  8. }

  9. }

  10. class NormalUser extends TV
  11. {
  12.        
  13. public void money(int money)
  14. {
  15.   if(money == 0)
  16.   System.out.println("你是......普通用户,只能收看新闻联播。。。");
  17.   System.out.println("");
  18. }

  19. }
  20. class PayingUser extends TV
  21. {
  22.        
  23. public void money(int money)
  24. {
  25.   switch(money)
  26.   {
  27.    case 100:System.out.println("你是......初级付费用户,可以点播电影。。。");break;
  28.    case 200:System.out.println("你是......中级付费用户,可以点播连续剧。。。");break;
  29.    case 500:System.out.println("你是......高级付费用户,可以点播黑马程序员视频。。。");break;
  30.   }
  31. }

  32. }

  33. class abstractDemo
  34. {
  35. public static void main(String[] args)
  36. {
  37.   NormalUser nu = new NormalUser();
  38.   nu.notice();
  39.   nu.money(0);
  40.   PayingUser pu = new PayingUser();
  41.   pu.money(100);
  42.   pu.money(200);
  43.   pu.money(500);
  44.   
  45. }
  46. }>
复制代码

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
缺少了break 当满足条件case时,不能跳出switch语句

则会顺序执行之后的语句直至遇到break或者switch语句结束


希望能帮到你  共同学习哈

回复 使用道具 举报
每个case选项中,都加入break就好了。
switch语句中,如果选中一个选项后执行结束不加break,则会顺序向下执行所有switch语句。
回复 使用道具 举报
杜光 高级黑马 2013-7-30 10:26:24
7#
语句少了。。。一定要注意哦!!!

楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。
回复 使用道具 举报
dicegame 发表于 2013-7-30 01:11
思想很好啊
都开始Thinking in Java了
正确代码:运行结果:

哈哈,谢谢了
回复 使用道具 举报
杜光 发表于 2013-7-30 10:26
语句少了。。。一定要注意哦!!!

楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。 ...

嗯,好的。
回复 使用道具 举报
王磊 发表于 2013-7-30 01:06
每个case选项中,都加入break就好了。
switch语句中,如果选中一个选项后执行结束不加break,则会顺序向下 ...

知道了,谢谢拉
回复 使用道具 举报
回复 使用道具 举报
xwf4348 发表于 2013-7-30 08:49
每个case选项中,都加入break就好了。
switch语句中,如果选中一个选项后执行结束不加break,则会顺序向下 ...

知道了,谢谢啦
回复 使用道具 举报
手心里的温柔 发表于 2013-7-30 01:22
缺少了break 当满足条件case时,不能跳出switch语句

则会顺序执行之后的语句直至遇到break或者switch语句 ...

嗯嗯 ,谢谢咯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马