我必须编写一个程序,从文件中读取字典单词列表。 随后,每个单词的字符按字母顺序排列并存储在原始数组中。 (例如:蝙蝠侠会变得无用)。 现在,这是我到目前为止所做的:
public static String[] alphabeticalOrder(String[] s)
{
//
// Sort each individual string element by alphabetical order
//
for (int i = 0; i < s.length; i++)
{
String wordSt = s[i];
char[] word = wordSt.toCharArray();
Arrays.sort(word);
s[i] = new String(word);
}
return s;
}
主要的电话是:String[] alphaOrder = alphabeticalOrder(dictionary);
但是,每当我运行程序时,我都会得到一个NullPointerException
而我似乎无法找出原因。
将s[i]
更改为s[0]
会让我跳过错误,但我需要转换字符串中的所有元素,而不仅仅是第一个元素。
出了什么问题?
答案 0 :(得分:1)
只有当您的字符串数组具有null元素时才会发生这种情况,如Zavior所评论的那样。
将您的代码更改为:
public static String[] alphabeticalOrder(String[] s)
{
//
// Sort each individual string element by alphabetical order
//
for (int i = 0; i < s.length; i++)
{
String wordSt = s[i];
if(wordSt == null) continue;
char[] word = wordSt.toCharArray();
Arrays.sort(word);
s[i] = new String(word);
}
return s;
}
答案 1 :(得分:0)
从我看到的情况来看,NullPointerEception
只有在传递的String
数组中的一个元素为null
时才会发生。要调试它,只需在调用wordSt.toCharArray()
之前进行空检查:
if (wordSt == null) {
System.out.println("Null encountered at index: " + i + ". Skipping this element...");
continue;
}
char[] word = wordSt.toCharArray();
这将帮助您找出输入有什么问题,并采取任何必要的步骤来防止这种情况发生。
答案 2 :(得分:0)
正如大家所指出的,当wordSt为null时,您可能会遇到NullPointerException。你可能遇到null的另一点是String [] s本身为null(很少但可能)。所以我建议 -
public static String[] alphabeticalOrder(String[] s)
{
if(s == null || s.length == 0) return s;
for (int i = 0; i < s.length; i++) {
if(s[i] != null) {
char[] word = s[i].toCharArray();
Arrays.sort(word);
s[i] = new String(word);
}
}
return s;
}
希望这有帮助。