黑马程序员技术交流社区

标题: Java小测试--我是挂了,你呢? [打印本页]

作者: DuckJava    时间: 2014-12-14 21:13
标题: Java小测试--我是挂了,你呢?
  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. }
复制代码


作者: I空空    时间: 2014-12-14 21:26
我也挂了
作者: 姿_`态    时间: 2014-12-14 21:50
貌似这样可以哎
  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. }

复制代码


作者: as604049322    时间: 2014-12-14 21:57
其实这题就是一个脑筋急转弯,直接不理会MatterDemo对象,直接打印就是了。
补入以下代码
  1.   for(int i=0;i<30;i++)
  2.             System.out.println("Java+ ");
复制代码

作者: SuperBoy    时间: 2014-12-14 22:08
不用理会它,直接op.run();
作者: DuckJava    时间: 2014-12-14 22:32
姿_`态 发表于 2014-12-14 21:50
貌似这样可以哎

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

大神可以尝试不要Runnable进行changeFlag();改变while(flag)的循环条件么,求搭救。  还是我的理解有误,根本就不可以使用这样的方式来控制循环?  求指教,鄙人菜鸟一头。。。。。
作者: manu_chen    时间: 2014-12-14 22:33
我也挂了
作者: Gyx    时间: 2014-12-14 22:34
不会,我也挂了。。。。。:'(
作者: wzl963358694    时间: 2014-12-14 22:35
我也挂了
作者: 取名回忆的时光    时间: 2014-12-14 22:38
我觉得也是,这道题目的意图是在创建了OP对象后,在循环中要调用到op.changeFlag()来改变条件后跳出循环吧
作者: 姿_`态    时间: 2014-12-14 22:50
DuckJava 发表于 2014-12-14 22:32
运行OK。没想到会用到内部类。其实我当初的想法是,在主函数中调用changeFlag();让changeFlag();去改变wh ...

应该根本就不可以使用flag ,因为语句是在while中的,通过flag可以控制,是否输出,但无法控制输出次数
作者: wei2666510    时间: 2014-12-14 22:53
好像有点难度噢···
作者: DuckJava    时间: 2014-12-14 22:57
姿_`态 发表于 2014-12-14 22:50
应该根本就不可以使用flag ,因为语句是在while中的,通过flag可以控制,是否输出,但无法控制输出次数 ...

好的,谢了。看到你的回答我决定不再纠结这个问题了。
作者: 姿_`态    时间: 2014-12-14 23:00
恩恩 大家互相交流,我好多都忘了,在复习中,好像四楼更简单,我想的也复杂了
作者: cs8630323    时间: 2014-12-15 00:04
这题目想考什么?有点无厘头
作者: 钟伟    时间: 2014-12-15 10:54
妈蛋,就是用来诱导人的,死循环不加代码怎么控制次数? 我也写了内部类直接覆盖方法,但是觉得给changeFlag()肯定有用,又折腾了半天:Q




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2