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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DuckJava 中级黑马   /  2014-12-14 21:13  /  2406 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class MatterDemo
  2. {
  3. private boolean flag = true;

  4. public void changeFlag()
  5. {
  6. flag = false;
  7. }

  8. public void run()
  9. {
  10. while(flag)
  11. {
  12. System.out.println("Java+ ");
  13. }
  14. }
  15. }
  16. //---智力测试:根据以上代码在主函数中补足代码,完成“Java+ ”30行的打印。(不得改动已有代码)
  17. class Matters
  18. {
  19. public static void main(String[] args)
  20. {
  21. MatterDemo op = new MatterDemo();

  22. //--补足代码

  23. }
  24. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

16 个回复

正序浏览
钟伟 高级黑马 2014-12-15 10:54:34
16#
妈蛋,就是用来诱导人的,死循环不加代码怎么控制次数? 我也写了内部类直接覆盖方法,但是觉得给changeFlag()肯定有用,又折腾了半天:Q
回复 使用道具 举报
这题目想考什么?有点无厘头
回复 使用道具 举报
恩恩 大家互相交流,我好多都忘了,在复习中,好像四楼更简单,我想的也复杂了
回复 使用道具 举报
姿_`态 发表于 2014-12-14 22:50
应该根本就不可以使用flag ,因为语句是在while中的,通过flag可以控制,是否输出,但无法控制输出次数 ...

好的,谢了。看到你的回答我决定不再纠结这个问题了。
回复 使用道具 举报
好像有点难度噢···
回复 使用道具 举报
DuckJava 发表于 2014-12-14 22:32
运行OK。没想到会用到内部类。其实我当初的想法是,在主函数中调用changeFlag();让changeFlag();去改变wh ...

应该根本就不可以使用flag ,因为语句是在while中的,通过flag可以控制,是否输出,但无法控制输出次数
回复 使用道具 举报
我觉得也是,这道题目的意图是在创建了OP对象后,在循环中要调用到op.changeFlag()来改变条件后跳出循环吧
回复 使用道具 举报
我也挂了
回复 使用道具 举报
Gyx 中级黑马 2014-12-14 22:34:04
8#
不会,我也挂了。。。。。:'(
回复 使用道具 举报
我也挂了
回复 使用道具 举报

运行OK。没想到会用到内部类。其实我当初的想法是,在主函数中调用changeFlag();让changeFlag();去改变while(flag){..}的循环条件,不知道这样可行吗?不过可以肯定的是,如果MatterDemo implements Runnable了,那么是可以在主函数中通过调用changeFlag();来改变while(flag)的循环条件的。但是效果不理想,不能准确控制打印出来的“Java+ ”的个数。

大神可以尝试不要Runnable进行changeFlag();改变while(flag)的循环条件么,求搭救。  还是我的理解有误,根本就不可以使用这样的方式来控制循环?  求指教,鄙人菜鸟一头。。。。。
回复 使用道具 举报
不用理会它,直接op.run();
回复 使用道具 举报
其实这题就是一个脑筋急转弯,直接不理会MatterDemo对象,直接打印就是了。
补入以下代码
  1.   for(int i=0;i<30;i++)
  2.             System.out.println("Java+ ");
复制代码

点评

大神这样似乎更好  发表于 2014-12-14 22:48
回复 使用道具 举报
貌似这样可以哎
  1. class MatterDemo

  2. {

  3. private boolean flag = true;


  4. public void changeFlag()

  5. {

  6. flag = false;

  7. }


  8. public void run()

  9. {

  10. while(flag)

  11. {

  12. System.out.println("Java+ ");

  13. }

  14. }

  15. }

  16. //---智力测试:根据以上代码在主函数中补足代码,完成“Java+ ”30行的打印。(不得改动已有代码)

  17. class Matters

  18. {

  19. public static void main(String[] args)

  20. {

  21. MatterDemo op = new MatterDemo();


  22. //--补足代码
  23.         class Inner extends MatterDemo
  24.         {
  25.                
  26.                
  27.                 public void run(){
  28.                         for(int i=0;i<30;i++){
  29.                                 System.out.println("Java+ ");
  30.                         }
  31.                 }
  32.         }
  33.         new Inner().run();
  34.        
  35.        
  36. }


  37. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
我也挂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马