执行 while 循环时出错

Error when implementing a while loop

我正在尝试编写一种通过对话框多次请求用户输入的方法,该方法仅在输入空字符串时停止请求。

每个条目都需要添加到一个列表中,我称之为 aList。我在我的程序中为对话框使用定制导入,您可能不熟悉它,称为 Dialog.request("");

我不一定非要使用它,但我确实需要一个弹出对话框,该对话框仅在输入空字符串或按下取消时关闭。希望你能帮忙

public void addToList()

{
    String inputName = Dialog.request("Please Enter A Name");
    aList.add(inputName);
}

while循环如下

public void addToList()
{   String inputName = Dialog.request("Please Enter A Name");
    while(inputName !=""){
    aList.add(inputName);
}
}

我试图实现一个 while 循环,但这导致了以下错误

java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError at unknown line

如有任何提示,我们将不胜感激。到目前为止,使用 x.addToList(); 调用该方法一次仅添加一个条目。当我放入 while 循环或 do-while 循环时,出现错误

这里有几个问题。首先,在比较 Strings/Objects 时,您应该使用 .equals.equalsIgnoreCase 而不是 !===。下一个问题是您没有在循环内重新提示用户输入。你可能想要这样的东西:

public void addToList()
{
    String inputName = Dialog.request("Please Enter A Name");
    while(!inputName.equalsIgnoreCase(""))
    {
        aList.add(inputName);
        inputName = Dialog.request("Please Enter A Name");
    }
}

如果用户输入了一个名字,你应该一直要求他们输入另一个名字,直到他们不输入名字为止。

你的问题在这里:

while(inputName !=""){
    aList.add(inputName);
}

这里有 2 个问题。首先,您不能将字符串与 !=== 进行比较,因为这将比较 引用 。改为用户 String.equals()

其次,您正在检查一个 不会改变 的变量。这很关键,因为它意味着循环中的条件要么 always 要么 never 为真。您必须在循环中的某个点更改条件,否则它将永远不会终止。

最简单的方法是在循环中请求用户输入,如下所示:

String inputName = "nothing";
while(!inputName.equals("")){
    inputName = Dialog.request("Please Enter A Name");
    aList.add(inputName);
}

作为一个平等的——但在我看来更优雅——替代以前的答案,循环可以用一个 do-while 语句来表达:

String inputName;
do {
    inputName = Dialog.request("Please Enter A Name");
    if (!inputName.equals("")) {
        aList.add(inputName);
    }
} while (!inputName.equals(""));