JAVA-如何动态地将字符串值赋给字符串数组

时间:2011-05-19 05:37:54

标签: java

在我的应用程序中,我动态获取字符串值。我想将这些值分配给字符串数组然后打印这些值。但它显示一个错误(空指针异常) EX:

String[] content = null;
for (int s = 0; s < lst.getLength(); s++) {
    String st1 = null;
    org.w3c.dom.Node nd = lst.item(s);
    if (nd.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
        NamedNodeMap nnm = nd.getAttributes();

        for (int i = 0; i < 1; i++) {
            st1 = ((org.w3c.dom.Node) nnm.item(i)).getNodeValue().toString();
        }
    }

    content[s] = st1;
    //HERE it shows null pointer Exception.
}  

由于

4 个答案:

答案 0 :(得分:8)

这是因为你的字符串数组为null。 String[] content=null;

您将数组声明为null,然后尝试在其中指定值,这就是它显示NPE的原因。

您可以尝试为字符串数组提供初始大小,或者更好地使用ArrayList<String>。 即:

String[] content = new String[10]; //--- You must know the size or array out of bound will be thrown.

如果使用像

这样的arrayList,那就更好了
List<String> content = new ArrayList<String>(); //-- no need worry about size.

列表使用add(value)方法在列表中添加新值,并使用foreach循环打印列表内容。

答案 1 :(得分:0)

使用ArrayListVector以动态方式创建字符串的集合(或数组)。

List<String> contents = new ArrayList<String>();
Node node = (org.w3c.dom.Node) nnm.item(i)).getNodeValue();
if (null != node)
    contents.add(node.toString());

在循环之外,您可以执行以下操作

for(String content : contents) {
     System.out.println(content) // since you wanted to print them out

答案 2 :(得分:0)

有点难以理解你所追求的是因为你的例子被淹没了。但是,您的String数组为null。你需要初始化它,而不仅仅是声明它。您是否考虑过使用ArrayList? java中的数组是固定长度的(除非他们从我大学时代就改变了这一点)。

使用ArrayList要简单得多。

E.g:

List<String> content = new ArrayList<String>();
for (int i = 0; i < limit; i++){
   String toAdd;
   //do some stuff to get a value into toAdd
   content.add(toAdd)
}

你的一个for循环也有些奇怪。

for(int i=0;i<1;i++)

以上只会迭代一次。澄清:

for(int i=0;i<1;i++){
   System.out.println("hello");
}

在功能上与:

相同
System.out.println("hello");

他们都打印出“你好”一次,并且就是这样。

答案 3 :(得分:0)

使用

 content[s] = new String(st1);

现在它为该特定数组索引创建新实例。