【发布时间】:2017-01-24 15:28:39
【问题描述】:
我正在尝试读取文件并按字母顺序排列名称。该文件有一个名字和姓氏的列表,例如:
鲍勃花 蒂娜海 脆皮蟹 马克克鲁兹我想使用冒泡排序来按字母顺序排列字符串。我不断收到错误消息:
java.lang.NullPointerException 在 java.lang.String.compareTo(未知来源) 在 BubbleSort.Alphabetize(BubbleSort.java:48) 在 BubbleSort.main(BubbleSort.java:31)到目前为止我的代码是:
import java.util.*;
import java.io.*;
public class BubbleSort
{
public static void main(String[] args)
throws IOException
{
File inData = new File("names.txt");
if (!inData.exists()) {
System.out.println("File does not exist");
System.exit(0);
}
Scanner input = new Scanner(inData);
int x = 0;
String[] name = new String[30];
//String[] extra = new String[30];
while (input.hasNext()) {
name[x] = input.next();
input.nextLine();
// extra[x] = input.next();
// System.out.println(name[x]);
x++;
}
BubbleSort sorter = new BubbleSort();
sorter.Alphabetize(name, x);
for (int i = 0; i < x; i++) {
System.out.println(name[i]);
}
input.close();
}
private static void Alphabetize(String[] array, int a)
throws IOException
{
String temp;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j].compareTo(array[j + 1]) > 0) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
我不明白如何解决这个错误,或者什么是真正的错误。
【问题讨论】:
-
@Marvin 我看过那个帖子,它确实没有完全了解我的情况,我无法完全理解。
-
BubbleSort.java:48 是哪一行?你在那条线上有一个 NPE。
-
@student100 您可以运行循环直到您传递的
a变量,这将消除从array获取空值的可能性,正如 Anton 在他的回答中所解释的那样。
标签: java arrays file bubble-sort