如何在没有从编译器中获取错误异常的情况下检查java中的数组列表sizeof,如果arraylist没有被初始化。 我已经尝试了以下,但它不起作用。我得到这个消息: 异常线程“main” java.lang.IndexOutOfBoundsException:指标:1,尺寸:1检查数组列表的大小
ArrayList<String> str = new ArrayList<>();
if (str.size()>0)
如何在没有从编译器中获取错误异常的情况下检查java中的数组列表sizeof,如果arraylist没有被初始化。 我已经尝试了以下,但它不起作用。我得到这个消息: 异常线程“main” java.lang.IndexOutOfBoundsException:指标:1,尺寸:1检查数组列表的大小
ArrayList<String> str = new ArrayList<>();
if (str.size()>0)
没有什么在你发布,将引发IndexOutOfBoundsException
的代码。我假设你之前没有检查尺寸,打电话给str.get(0)
?
无论如何,你的代码是好的,即你应该能够把它扩大到像做了以下内容:
List<String> someStrings = new ArrayList<String>();
...
if (someStrings.size() > 0) {
System.out.println("First element of list is: " + someStrings.get(0));
} else {
System.out.println("List is empty");
}
然而,对于洁净度我会建议使用if (!someStrings.isEmpty())
代替,检查同样的事情, if (someStrings.size() > 0)
。
通过初始化,你的意思是,如果一个对象被分配给一个参考
随着代码
List<String> str;
如果调用str.size(),它会抛出一个空指针异常,因为你有未将对象分配给此列表引用。
要分配的参考,那么你可以做
List<String> str = new Arraylist<String>();
STR现在指向数组列表对象。
现在,您可以拨打
str.isEmpty()
,看看如果列表中的任何内容。
列表是zero based所以如果你调用str.get(0),那么你将得到一个IndexOutOfBounds异常。如果添加元素
str.add("hello")
,那么你不能获得的第一个元素(索引为0),因为其中没有在那里
你可以叫
str.get(0)
将返回“你好”
如果您调用str.get(1),那么您将再次获得IndexOutOfBound,因为索引1实际上是数组列表中的第二个元素,并且不存在。
这段代码似乎没问题,你确定exceling来自该行吗? – IProblemFactory
除非您发现了一些新的严重错误,否则该代码不会抛出该异常。 – oldrinb
如果你的集合的* size *是'1',那么唯一有效的索引是'0'。 – vstm