【问题标题】:Nested while loops and how to access the inner one after first run嵌套的while循环以及第一次运行后如何访问内部循环
【发布时间】:2020-01-24 04:31:38
【问题描述】:

所以我正在尝试制作带有子菜单的菜单。所以我的第一个想法是嵌套的while循环。所以我做了一个小程序来尝试我的想法,我显然错了?

当我运行这段代码时

    public static void main(String[] args){
        int i = 1;
        int j = 1;

        while(i != 2){
            i = Kbd.readInt("1 to go to inner 2 to exit");

            while(j != 2){
                j = Kbd.readInt("1 to continue 2 to exit to outer");
            }

        }
    }
}

我可以“访问”子菜单并无限次运行,直到我退出(如果我按 2) 但是在我从内部 while 循环开始后,我似乎无法再次访问内部循环?

我想知道我是否在想错或对我应该如何做有任何建议。

(Kbd 类是我们类的扫描器)

【问题讨论】:

  • 在外循环末尾添加j = 1;
  • 我会将int j = 1 移动到第二个while 循环上方的一行——它使那行代码更接近它的使用位置,这通常是一种很好的风格,也使它更具可读性:define j,设置为1,使用j进入循环。

标签: java while-loop nested


【解决方案1】:

当然你不能重新进入内部循环,因为离开循环时 j 总是 2 并且永远不会在外部改变。

考虑在循环中将 j 保持在本地。

while (i != 2)
{
    int j = 1 ;
    while (j != 2)
        ...
}

修复此错误后,您将发现下一个错误。如果在第一个 getInt() 中按 2 会发生什么?你真的要进入内循环,不管 i 的值是多少?用户提示提出了不同的建议。

【讨论】:

  • 是的,在我修好这个之后我很容易就修好了 :)
猜你喜欢
  • 1970-01-01
  • 2021-12-17
  • 2018-05-14
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多