实现while循环时出错

时间:2015-05-06 15:06:10

标签: java while-loop do-while

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

每个条目都需要添加到列表中,我会调用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循环时,我得到错误

3 个答案:

答案 0 :(得分:1)

这里有几个问题。首先,在比较Strings /对象时,您应使用.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");
    }
}

如果用户输入名称,您应该继续询问他们其他名称,直到他们没有输入名称。

答案 1 :(得分:1)

你的问题在这里:

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

这有两个问题。首先,您无法将字符串与!===进行比较,因为这会比较引用。用户String.equals()代替。

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

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

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

答案 2 :(得分:0)

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

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