[英]Sorting individual elements in a String Array by their alphabetical order
我必须编写一个程序来从文件中读取字典单词的列表。 随后,每个单词的字符按字母顺序排列并存储在原始数组中。 (例如:《蝙蝠侠》将变成aabmnt)。 现在,这是我到目前为止所做的:
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;
}
main中的调用很简单: String[] alphaOrder = alphabeticalOrder(dictionary);
但是,每当我运行该程序时,都会收到NullPointerException
而且似乎无法弄清原因。
将s[i]
更改为s[0]
使我跳过了错误,但是我需要转换String中的所有元素,而不仅仅是第一个。
怎么了?
正如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;
}
据我NullPointerEception
仅当传递的String
数组的元素之一为null
, NullPointerEception
才会发生。 要调试它,只需在调用wordSt.toCharArray()
之前执行空检查:
if (wordSt == null) {
System.out.println("Null encountered at index: " + i + ". Skipping this element...");
continue;
}
char[] word = wordSt.toCharArray();
这将帮助您找出输入的问题,并采取任何必要的步骤来防止这种情况(如果这不是预期的话)。
正如每个人都指出的那样,当wordSt为null时,您可能会遇到NullPointerException。 还有一个可能遇到null的地方是String []本身为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;
}
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.