Java NULL指针异常中的字符串数组

时间:2015-07-02 07:55:07

标签: java arrays

我想制作一个字符串数组

我没有固定的尺寸

因为它必须初始化,我用null初始化它..它给java空指针异常???

在我的代码的另一部分,我循环数组以打印其内容.. 那么如何在没有固定大小的情况下克服这个错误

   public static String[] Suggest(String query, File file) throws FileNotFoundException
{
    Scanner sc2 = new Scanner(file);
    LongestCommonSubsequence obj = new LongestCommonSubsequence();
    String result=null;
    String matchedList[]=null;
    int k=0;

    while (sc2.hasNextLine()) 
    {
        Scanner s2 = new Scanner(sc2.nextLine());
        while (s2.hasNext()) 
            {
            String s = s2.next();
            //System.out.println(s);
            result = obj.lcs(query, s);

                if(!result.equals("no match"))
                {matchedList[k].equals(result); k++;}

            }
        return matchedList;
    }
    return matchedList;
}

1 个答案:

答案 0 :(得分:0)

如果你不知道大小,列表总是更好。

要避免NPE,您必须像这样初始化List:

List<String> matchedList = new ArrayList<String>(); 

ArrayList就是一个例子,你可以使用你需要的所有列表之王。

要获得您的元素而不是matchedList[index],您将拥有:

macthedList.get(index);

所以我们的代码就像这样:

public static String[] Suggest(String query, File file) throws FileNotFoundException
{
...
List<String> matchedList= new ArrayList<String>();
...

while (sc2.hasNextLine()) 
{
    Scanner s2 = new Scanner(sc2.nextLine());
    while (s2.hasNext()) 
    {
        ...
        if(!result.equals("no match")){
          //This line is strange. See explanation below
          matchedList.get(k).equals(result);
          k++;
         }
    }
    return matchedList;
}
return matchedList;
}

您的代码中有一些奇怪的内容:

matchedList.get(k).equals(result);

当你这样做时,你比较两个值,它将返回true或false。您可能希望在列表中添加值,在这种情况下,您必须这样做:

matchedList.add(result);