3 回答
TA贡献1770条经验 获得超3个赞
你可以
截断数组以删除null元素
String[] sorteerArray = new String[25];
int nbValue = 0;
for (int i = 0; i < 25; i++) {
System.out.print (i + 1 );
invoer = sc.nextLine();
sorteerArray[i] = invoer;
nbValue++;
if ("".equals(invoer)) {
break;
}
}
sorteerArray = Arrays.copyOf(sorteerArray, nbValue);
Arrays.sort(sorteerArray);
用一个 List
List<String> sorteerList= new List<String>();
for (int i = 0; i < 25; i++) {
System.out.print (i + 1 );
invoer = sc.nextLine();
sorteerList.add(invoer);
if ("".equals(invoer)) {
break;
}
}
sorteerList.sort(Comparator.naturalOrder());
TA贡献1936条经验 获得超6个赞
您可以使用“”初始化字符串数组。例如-
for(int i=0;i<25;i++){
sorteerArray[i]="";
}
或者您可以使用集合即列表来拥有动态大小的数组。
TA贡献1780条经验 获得超3个赞
想想如果你输入""第三个字符串会发生什么。
所以你的循环中断了,数组中的一些值仍然是String的默认值,在这种情况下是null.
这使得sort尝试与null其他字符串进行比较(您可以在线阅读如何.sort工作)。
要解决此问题,您应该在循环之前添加以下内容:
for (int i = 0; i < sorteerArray.length; i++) {
sorteerArray[i]="";
}
如果您使用调试器检查代码,您将能够看到数组中的所有值,在 , 之后""都是null. 所以在sort运行时,它会比较数组的值,并在某个时候到达null,导致NullPointerException.
我上面写的代码将用空字符串初始化数组,以便可以比较它们。
添加回答
举报