【发布时间】:2012-12-18 04:31:46
【问题描述】:
如何检查列表是否为空?如果是这样,系统必须给出一条消息说List is empty。如果不是,系统必须给出一条消息说List is not empty。
用户可以输入数字,-1 来停止程序。
这是我现在拥有的代码,但这不起作用,它总是说'List is not empty'。
import java.util.*;
import javax.swing.JOptionPane;
public class ArrayListEmpty
{
public static void main(String[] args)
{
List<Integer> numbers = new ArrayList<Integer>();
int number;
do {
number = Integer.parseInt(JOptionPane.showInputDialog("Enter a number (-1 to stop)"));
numbers.add(number);
} while (number != -1);
giveList(numbers);
}
public static void giveList(List<Integer> numbers)
{
if (numbers != null)
JOptionPane.showMessageDialog(null, "List isn't empty");
else
JOptionPane.showMessageDialog(null, "List is empty!");
}
}
【问题讨论】:
-
您总是收到“列表不为空”消息的原因是您在实例化它并添加一个数字后进行检查。即使用户输入 -1,它仍然会被添加到列表中。
-
null和一个空列表不是一回事。 -
您 [阅读 javadocs](docs.oracle.com/javase/7/docs/api/java/util/… ) ... 但是,您似乎不明白
null的含义,这是一个更大的问题。 -
@jonhopkings:但是怎么做呢?我必须先实例化我现在猜想的数组列表。而我的 do-while 确保值 -1 不能插入到 arraylist 中?
-
@user1873613 将
numbers.add(number);替换为if (number != -1) numbers.add(number);这将防止-1 被插入到列表中,如果-1 是用户输入的第一件事,那么当@987654328 时列表将为空@被称为