Wyouxia
2021-01-16 22:44
采纳率: 100%
浏览 14
已采纳

求问一个while语句的循环问题

为什么我的线程在调用的时候只能循环一次,但是将num++放在if语句的下面就可以正常循环呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 慕莲吟 2021-01-17 00:41
    已采纳


    如上图所示: 在我看来, 当num=1 的时候, 在你这段代码里面的时候, 走进去了system.out.println代码块, 执行了num+1 ,也就是num = 2;
    然后当你2进入while循环的时候, num % 2 即为 0 , 但是你为0的时候,没有system.out.println代码块, 导致num 无法 ++, 所以num值一直都是2;
    综合下来说, 所有的while循环,全部都是num=2 的情况下循环的, 而且还是无限循环下去的。 唯一在控制台打印输出的system.out.println 内容, 只有第一次被执行。
    打字不易, 若回答正确, 望采纳!谢谢!

    已采纳该答案
    打赏 评论
  • NSLCJ_wzqdnzqst 2021-01-16 23:34

    num判断进不去,所以只输出一次

    打赏 评论
  • Wyouxia 2021-01-16 23:50

    为什么判断进不去啊?

     

    打赏 评论
  • 慕莲吟 2021-01-17 00:47

    追加上一个回答内容, 你应该这样写:

    if(num % 2 != 0){
       system.out.println(Thread.currentThread().getName() + "-->" + num);
    }
       num++;

    或者干脆直接if不要了:

    system.out.println(Thread.currentThread().getName() + "-->" + num);
    num++;
    打赏 评论
  • 慕莲吟 2021-01-17 00:48

    如果是要存在除数的条件,那就再增加一个else 条件做其他业务逻辑。

    打赏 评论

相关推荐 更多相似问题