Bubble Сортировка строк в массиве

1

Я пытаюсь пузырьки сортировать строковые данные, которые были введены в массив в нисходящем и восходящем порядке.

Ниже приведен код:

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
Теги:
string
arrays
sorting

4 ответа

1
Лучший ответ

Взгляните на метод

public static String bubbleSortDesc(String[] names)

Возврат этого метода должен быть String (только один), но вы возвращаете параметр "names", который представляет собой массив строк. "[]" После строки определяет его как массив.

Я не собираюсь делать домашнее задание для вас, поэтому подсказка: проверьте, должен ли возвращаемый тип метода bubbleSortDesc быть одним String или массивом строк.

Удачи.

  • 0
    Спасибо, я все решил и сумел заставить программу скомпилировать и выполнить. Однако строки, которые должны печатать массив после объявления и сортировки, вместо этого выводятся на печать. Не могли бы вы дать мне понять, почему это происходит?
  • 0
    Когда вы печатаете объект, он печатает ссылку на этот объект. В этом случае вы хотите напечатать значения этого объекта, что означает создание цикла for для прохождения объекта и, для каждого значения, печать значения.
0

Есть 2 пункта, чтобы исправить. Сначала вы должны вернуть массив String

 public static String[] bubbleSortDesc(String[] names)

и поэтому вы должны определить его так:

 String descSort[]; 
0

Вы можете исправить команду печати, изменив ее на следующее:

System.out.println("Names listed sorted in descending order (via BubbleSort): "+ java.util.Arrays.deepToString(descSort));

Если вы хотите использовать nitty gritty, descSort - это String []. В Java при преобразовании String [] в String это дает вам сумасшедшее строковое представление. Вы должны вместо этого конвертировать каждую запись в массив в строку по отдельности. К счастью, метод deepToString сделает это за вас.

0

public static String bubbleSortDesc (имена String [])

должно быть

public static String [] bubbleSortDesc (имена String [])

а также объявить descSort как массив String.

Также вы просто печатаете объекты массива. Это не будет печатать список для вас. У вас есть итерация по массиву.

Включите это в свой код:

for (String name:names)
{
System.out.println(name);
}

Сделайте то же самое для descSort тоже....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню