2012-09-09 54 views
0

如何在没有从编译器中获取错误异常的情况下检查java中的数组列表sizeof,如果arraylist没有被初始化。 我已经尝试了以下,但它不起作用。我得到这个消息: 异常线程“main” java.lang.IndexOutOfBoundsException:指标:1,尺寸:1检查数组列表的大小

ArrayList<String> str = new ArrayList<>(); 
if (str.size()>0) 
+0

这段代码似乎没问题,你确定exceling来自该行吗? – IProblemFactory

+0

除非您发现了一些新的严重错误,否则该代码不会抛出该异常。 – oldrinb

+1

如果你的集合的* size *是'1',那么唯一有效的索引是'0'。 – vstm

回答

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)

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实际上是数组列表中的第二个元素,并且不存在。