Reputation: 97
This program reads the lines of an input file and stores them into the array words. Then each element in words[] is put into a character array and sorted alphabetically. Each sorted character array is assigned to a string and those strings populate another array sortedWords. I need to sort the elements in the sortedWords array. I get a NullPointerException when I use Arrays.sort(sortedWords).
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a file name: ");
System.out.flush();
String filename = scanner.nextLine();
File file = new File(filename);
String[] words = new String[10];
String[] sortedWords = new String[10];
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
int i = 0;
while(line != null) {
words[i] = line.toString(); // assigns lines into the array
line = br.readLine(); // this will eventually set line to null, terminating the loop
String signature = words[i];
char[] characters = signature.toCharArray();
Arrays.sort(characters);
String sorted = new String(characters);
sortedWords[i] = sorted; // assigns each signature into the array
sortedWords[i] = sortedWords[i].replaceAll("[^a-zA-Z]", "").toLowerCase(); // removes non-alphabetic chars and makes lowercase
Arrays.sort(sortedWords);
System.out.println(words[i] + " " + sortedWords[i]);
i++;
}
}
catch(IOException e) {
System.out.println(e);
}
}
Upvotes: 1
Views: 11808
Reputation: 9538
You should take the sort
out of the while
loop.
int i = 0;
while(line != null) {
...
i++;
}
Arrays.sort(sortedWords, 0, i);
The problem is that you call sort
before you finished populating the sortedWords
array. The array therefore still contains null
strings and these cause the NullPointerException
.
Upvotes: 3