这是我的代码:
import java.util.Arrays;
import java.util.Scanner;
public class Test9 {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String invoer = null;
String[] sorteerArray = new String[25];
for (int i = 0; i < 25; i++) {
System.out.print (i + 1 );
invoer = sc.nextLine();
sorteerArray[i] = invoer;
if ("".equals(invoer)) {
break;
}
}
Arrays.sort(sorteerArray);
for (String sorteerArrayOutput : sorteerArray) {
System.out.println (sorteerArrayOutput);
}
}
}
我得到一个NullPointerException,因为当我尝试对数组进行排序时,这是因为我用25初始化了数组。我知道问题出在哪里,我只是不知道如何解决它。在此先感谢:)。
答案 0 :(得分:1)
您可以
截断数组以删除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());
答案 1 :(得分:0)
您可以使用“”初始化字符串数组。 例如-
for(int i=0;i<25;i++){
sorteerArray[i]="";
}
或 您可以使用集合(即列表)具有动态尺寸数组。
答案 2 :(得分:0)
想想如果在第三个字符串中输入""
会发生什么。
因此,您的循环中断了,数组中的某些值仍为String
的默认值,在本例中为null
。
这样做是为了让sort
尝试将null
与其他字符串进行比较(您可以在线阅读.sort
的工作原理)。
要解决此问题,应在循环之前添加此内容:
for (int i = 0; i < sorteerArray.length; i++) {
sorteerArray[i]="";
}
如果使用调试器遍历代码,则可以看到数组""
之后的所有值都是null
。因此,当sort
运行时,它将在数组的值之间进行比较,并在某个时候到达null
,从而导致NullPointerException
。
我上面编写的代码将使用空字符串初始化该数组,以便可以对其进行比较。
答案 3 :(得分:0)
在这种情况下,您可以使用ArrayList代替数组,如下所述
import java.util.*;
public class Test9 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String invoer = null;
List<String> sorteerArray = new ArrayList<>(25);
for (int i = 0; i < 25; i++) {
System.out.print(i + 1);
invoer = sc.nextLine();
sorteerArray.add(invoer);
if ("".equals(invoer)) {
break;
}
}
Collections.sort(sorteerArray);
for (String sorteerArrayOutput : sorteerArray) {
System.out.println(sorteerArrayOutput);
}
}
}