Я пытаюсь пузырьки сортировать строковые данные, которые были введены в массив в нисходящем и восходящем порядке.
Ниже приведен код:
import java.util.*;
public class nextLineArray
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String names[]=new String[12];
System.out.println("Enter the 12 names: ");
//Load Array
for(int i = 0; i < 12; i++)
{
names[i] = input.nextLine();
}
//Print initial list
System.out.println("List of names via input:"+ names);
//Print descending order list
String descSort;
descSort=bubbleSortDesc(names);
System.out.println("Names listed sorted in descending order (via BubbleSort): "+descSort);
}
public static String bubbleSortDesc(String[] names)
{
String temp;
int passNum, i, result;
for(passNum=1; passNum <= 11; passNum++)
{
for(i = 0; i<=(11-passNum); i++)
{
result=names[i].compareToIgnoreCase(names[i+1]);
if(result>0)
{
temp=names[i];
names[i]=names[i+1];
names[i+1]=temp;
}
}
}
return names;
}
}
Когда я пытаюсь вернуть отсортированный массив к основному методу, он дает мне следующую ошибку в обратной линии:
Incompatible Types
Наш онлайн-инструктор только начал нас с использованием нескольких методов и массивов одновременно, и это довольно запутанно... пожалуйста, извините меня, если какая-либо из моих ошибок кажется очевидной.
Редактирование: я исправил исходную проблему благодаря Александру Сантосу в комментариях, теперь я столкнулся с проблемой при выполнении программы после ввода данных вместо того, чтобы печатать строки в массиве, который он распечатывает
[Ljava.lang.String;@6d782f7c
Взгляните на метод
public static String bubbleSortDesc(String[] names)
Возврат этого метода должен быть String (только один), но вы возвращаете параметр "names", который представляет собой массив строк. "[]" После строки определяет его как массив.
Я не собираюсь делать домашнее задание для вас, поэтому подсказка: проверьте, должен ли возвращаемый тип метода bubbleSortDesc быть одним String или массивом строк.
Удачи.
Есть 2 пункта, чтобы исправить. Сначала вы должны вернуть массив String
public static String[] bubbleSortDesc(String[] names)
и поэтому вы должны определить его так:
String descSort[];
Вы можете исправить команду печати, изменив ее на следующее:
System.out.println("Names listed sorted in descending order (via BubbleSort): "+ java.util.Arrays.deepToString(descSort));
Если вы хотите использовать nitty gritty, descSort - это String []. В Java при преобразовании String [] в String это дает вам сумасшедшее строковое представление. Вы должны вместо этого конвертировать каждую запись в массив в строку по отдельности. К счастью, метод deepToString сделает это за вас.
public static String bubbleSortDesc (имена String [])
должно быть
public static String [] bubbleSortDesc (имена String [])
а также объявить descSort как массив String.
Также вы просто печатаете объекты массива. Это не будет печатать список для вас. У вас есть итерация по массиву.
Включите это в свой код:
for (String name:names)
{
System.out.println(name);
}
Сделайте то же самое для descSort тоже....