У меня есть домашний вопрос, мне нужна помощь с
Нам предоставлен текстовый файл, содержащий одно слово в строке истории.Нам нужно прочитать этот файл в массив, выполнить сортировку в массиве, а затем выполнить двоичный поиск.
В задаче также сказано, что мне нужно использовать метод перегрузки, но я не уверен, где
У меня есть пузырьковая сортировка, которую я тестировал на небольшом массиве символов, которая работает
public static void bubbleV1String(String[]numbers)
{
for(int i = 0; i < numbers.length-1; i++)
{
for(int j = 0; j < numbers.length-1; j++)
{
if(numbers[j] .compareTo(numbers[j+1])>0)
{
String temp = numbers[j+1];
numbers[j+1] = numbers[j];
numbers[j] = temp;
}
}
}
}`
И мой бинарный поиск, который я тестировал на том же небольшом массиве
public static String binarySearch(int[] numbers, int wanted)
{
ArrayUtilities.bucketSort(numbers);
int left = 0;
int right = numbers.length-1;
while(left <= right)
{
int middle = (left+right)/2;
if (numbers[middle] == wanted)
{
return (wanted + " was found at position " + middle);
}
else if(numbers[middle] > wanted)
{
right = middle - 1;
}
else
{
left = middle + 1;
}
}
return wanted + " was not found";
}
Вот мой код в классе приложения для чтения и сортировки файла
String[] myArray = new String[100000];
int index = 0;
File text = new File("threebears.txt");
try {
Scanner scan = new Scanner(text);
while(scan.hasNextLine() && index < 100000)
{
myArray[index] = scan.nextLine();
index++;
}
scan.close();
} catch (IOException e) {
System.out.println("Problem with file");
e.printStackTrace();
}
ArrayUtilities.bubbleV1String(myArray);
try {
FileWriter outFile = new FileWriter("sorted1.txt");
PrintWriter out = new PrintWriter(outFile);
for(String item : myArray)
{
out.println(item);
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
Когда я запускаю код, я получаю исключение нулевого указателя и следующее сообщение
Exception in thread "main" java.lang.NullPointerException
at java.base/java.lang.String.compareTo(Unknown Source)
at parrayutilities.ArrayUtilities.bubbleV1String(ArrayUtilities.java:129)
at parrayutilities.binarySearchApp.main(binarySearchApp.java:32)
Строка 129 относится к этой строке кода моей сортировки пузырьков
if(numbers[j] .compareTo(numbers[j+1])>0)
И строка 32 относится к фрагменту кода, где я называю сортировку пузырьков
ArrayUtilities.bubbleV1String(myArray);
Кто-нибудь знает, почему я получаю исключение нулевого указателя, когда я тестировал сортировку пузырьков на небольшом строковом массиве?Я думаю, возможно, что-то делать с перегруженным методом, упомянутым ранее, но я не уверен,
Спасибо