Wyouxia
Wyouxia
采纳率100%
2021-01-16 22:44 阅读 9
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    tangyin9593 慕莲吟 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 NSLCJ_wzqdnzqst 2021-01-16 23:34

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

    点赞 评论 复制链接分享
  • Wyouxia Wyouxia 2021-01-16 23:50

    为什么判断进不去啊?

     

    点赞 评论 复制链接分享
  • tangyin9593 慕莲吟 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++;
    点赞 评论 复制链接分享
  • tangyin9593 慕莲吟 2021-01-17 00:48

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

    点赞 评论 复制链接分享

相关推荐