黑马程序员技术交流社区

标题: 模拟妈妈做饭这个题,做好后发现结果一直循环,求高手! [打印本页]

作者: 贾永长    时间: 2013-6-23 17:03
标题: 模拟妈妈做饭这个题,做好后发现结果一直循环,求高手!
本帖最后由 孙百鑫 于 2013-6-24 00:19 编辑

题目:模拟妈妈做饭,做饭时发现没有盐了,让儿子去买盐(假设买盐需要3分钟),只有盐买回来之后,妈妈才能继续做饭的过程。
代码:
  1. public class Test10
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 System.out.println("妈妈做饭中。。。");
  6.                 boolean salt=false;   //用salt代表盐,初始化为false表示没有盐。
  7.                 while(salt==false)
  8.                 {   
  9.                         //用try catch 来处理没有盐的状况。
  10.                         try
  11.                         {
  12.                                 System.out.println("忽然就发现没有盐了!!!");
  13.                                 new NullSalt(true);   //让儿子去买盐,调用NullSalt这个类。
  14.                         }
  15.                         catch(Exception e)
  16.                         {
  17.                                 e.printStackTrace();
  18.                         }
  19.                         System.out.println("妈妈继续做饭。。。");
  20.                 }        
  21.         }
  22. }
  23. class NullSalt
  24. {
  25.         NullSalt(boolean nullsalt)
  26.         {
  27.                 if(nullsalt==true)
  28.                 {
  29.                         System.out.println("随即喊儿子买盐去");
  30.                         new Son().getSalt();
  31.                 }
  32.         }
  33. }
  34. class Son
  35. {
  36.         public void getSalt()
  37.         {
  38.                 try
  39.                 {
  40.                         Thread thread = Thread.currentThread();
  41.                         thread.sleep(180000);
  42.                         System.out.println("儿子花了整整三分钟,盐终于买回来了");
  43.                 }
  44.                 catch(InterruptedException e)
  45.                 {   
  46.                         e.printStackTrace();
  47.                 }
  48.         }
  49. }
复制代码
结果:
  1. 妈妈做饭中。。。
  2. 忽然就发现没有盐了!!!
  3. 随即喊儿子买盐去
  4. 儿子花了整整三分钟,盐终于买回来了
  5. 妈妈继续做饭。。。
  6. 忽然就发现没有盐了!!!
  7. 随即喊儿子买盐去
  8. 儿子花了整整三分钟,盐终于买回来了
  9. 妈妈继续做饭。。。
  10. 忽然就发现没有盐了!!!
  11. 随即喊儿子买盐去
  12. 儿子花了整整三分钟,盐终于买回来了
  13. 妈妈继续做饭。。。
  14. 忽然就发现没有盐了!!!
  15. 随即喊儿子买盐去
  16. 儿子花了整整三分钟,盐终于买回来了
  17. 妈妈继续做饭。。。
  18. 忽然就发现没有盐了!!!
  19. 随即喊儿子买盐去
复制代码
结果一直循环着显示,看了好久没发现问题出在哪儿啊{:soso_e118:} 求高手指点一下,谢谢了!!




作者: Super_Class    时间: 2013-6-23 17:05
测试题尽量还是应该独立完成的
作者: 贾永长    时间: 2013-6-23 17:20
恩恩,独立完成。刚才回头又仔细看了一下,发现是while捣的鬼,改成if就OK了!{:soso_e130:}
作者: 王靖远    时间: 2013-6-23 17:49
while(salt==false)这句出问题了。salt初始化是false false==false 和while(true)一样。
作者: 王靖远    时间: 2013-6-23 17:49
while是循环语句不是判断语句

作者: 贾永长    时间: 2013-6-23 17:58
恩恩,记住了,小小的if判断和while循环用错了,结果就大大的不一样了。 谢谢了啊!{:soso_e156:}




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