我想制作一个字符串数组
我没有固定的尺寸
因为它必须初始化,我用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;
}
答案 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);