线程“AWT-EventQueue-0”中的异常java.lang.ArrayIndexOutOfBoundsException:0 2d array java

时间:2014-03-02 11:29:18

标签: java multidimensional-array

我可能错过了一些非常明显的东西,但是你们中的任何人都可以看到为什么这会在线程“AWT-EventQueue-0”中产生异常java.lang.ArrayIndexOutOfBoundsException:0 我正在尝试创建一个Visds对象列表,但是2d列表必须只有一列。

public Visables[][] searchBYsong(String search) throws XPathExpressionException

{

   MapVariableResolver vr = new MapVariableResolver() ;
   vr.setVariable("myVar",search);
   xpath.setXPathVariableResolver(vr);

   XPathExpression expr = xpath.compile("/music/Song[contains(songName,$myVar)]");
   nodes = (NodeList) expr.evaluate(doc,XPathConstants.NODESET);


   Visables[][] AL = new Visables[nodes.getLength()+1][0];
   for(int i = 0;i<nodes.getLength();i++)
   {
       AL[i][0]= new Visables();

   }
   for (int i = 0; i < nodes.getLength(); i++)
   {


       AL[i][0].getName(nodes.item(i).getChildNodes().item(0).getTextContent());
       AL[i][0].setArtist(nodes.item(i).getChildNodes().item(1).getTextContent());
       AL[i][0].setAlbum(nodes.item(i).getChildNodes().item(2).getTextContent());
       AL[i][0].setLocation(nodes.item(i).getChildNodes().item(3).getTextContent());
   }


   return AL;
}

  public class Visables 
{

private String loaction;

private String name;

private String album;

private String artist;

public  Visables()
{

}


@Override
public String toString()
{
    return name;
}
public void setArtist(String artist)
{
  this.artist=artist;   
}
public void getName(String name)
{
    this.name = name;
}
public void setAlbum(String album)
{
    this.album = album;
}
public void setLocation(String location)
{

 this.loaction=location;   
}

}

1 个答案:

答案 0 :(得分:1)

本声明中的[0]

Visables[][] AL = new Visables[nodes.getLength()+1][0];

表示您创建一个包含zero元素的数组。访问first元素后:

AL[i][0]= new Visables();

您收到此错误。在前面的语句中,[0]表示第一个元素。

要解决此问题,您需要创建一个包含1个元素的数组。所以像这样创建你的数组:

Visables[][] AL = new Visables[nodes.getLength()+1][1];

并且像这样访问(未更改):

AL[i][0]= new Visables();

我可以看到这有点令人困惑:)