我尝试编写一种方法,通过对话框多次请求用户输入,只有在输入空字符串时才停止请求。
每个条目都需要添加到列表中,我会调用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循环时,我得到错误
答案 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(""));