数组返回NULL

时间:2015-01-12 06:44:33

标签: java

我的代码..

package com.xchanging.selenium.utility;

import java.io.IOException;
import java.util.LinkedHashMap;

import org.apache.commons.lang3.ArrayUtils;

public class DataProviderConvertor extends ReadExcel {

    public static Object[][] convertData(String sheetName, String testCaseName)
            throws IOException {

        LinkedHashMap<String, String> table = ReadExcel.getData(sheetName,
                testCaseName);
        String[] myStringArray = new String[table.size()];
        for (String key : table.values()) {
            System.out.println("Keyvalues " + key.toString());
            String value = key.toString();
            ArrayUtils.add(myStringArray, value);
        }
        System.out.println("1st Index: " myStringArray[0]);
    }
  }

它正在返回

Keyvalues Y
Keyvalues ie
Keyvalues QC 
Keyvalues Yes
Keyvalues Rework Checklist Comments
Keyvalues Yes
Keyvalues MRI Updated Comments


1st Index: null

我期待这个数组中有6个元素,但都返回NULL ..为什么它没有返回预期值.. ??

6 个答案:

答案 0 :(得分:2)

如何更简单的方式。

public static Object[][] convertData(String sheetName, String testCaseName)
        throws IOException {

    LinkedHashMap<String, String> table = ReadExcel.getData(sheetName,
            testCaseName);

    String[] myStringArray = table.values().toArray( new String[ 0 ] );

    System.out.println("1st Index: " + myStringArray[0]);
}

答案 1 :(得分:1)

尝试

for (String key : table.values()) {
     System.out.println("Keyvalues " + key.toString());
     String value = key.toString();
     myStringArray =ArrayUtils.addAll(myStringArray, value);
}

或者

int cnt=0;

for (String key : table.values()) {
         System.out.println("Keyvalues " + key.toString());
         String value = key.toString();
         myStringArray[cnt++] =value;
    }

答案 2 :(得分:1)

ArrayUtil.add 方法复制数组,然后在新复制数组的末尾添加新元素。

所以,我认为问题出在你的代码中。

这就是myStringArray显示大小为0.的原因。复制myStringArray并形成一个新的字符串数组,然后将元素添加到其中。

答案 3 :(得分:0)

ArrayUtils.add(myStringArray, value);

此方法创建并返回添加了value的新数组

您需要指定结果:

myStringArray = ArrayUtils.add(myStringArray, value);

必须以这种方式完成,因为数组无法调整大小。

答案 4 :(得分:0)

你可以尝试这个 - :

int index =0;

for (String key : table.values()) {
            System.out.println("Keyvalues " + key.toString());
            String value = key.toString();
            myStringArray[index++] = value;            
        }

答案 5 :(得分:0)

只需要进行两项更改,否则代码完全没问题。

1。)String[] myStringArray = new String[table.size()];,改为

String[] myStringArray = null;

2。)ArrayUtils.add(myStringArray, value);更改为

myStringArray = ArrayUtils.add(myStringArray, value);

您可以阅读并调试此方法in API