2013-11-09 4 views
0

Я выполняю задание для своего введения в класс программирования, и это сортировка пузырьков. Код может быть ошибочным, но я не ищу кого-то, чтобы решить эту проблему. В чем моя проблема, я пытаюсь ее распечатать. Мне было дано условие, что метод должен определяться методом void по строке «public static void sort (int [] array)». Итак, если я попытался импортировать массивы и использовал System.out.println(Arrays.toString(sort(array))); в моем основном методе, это не сработало бы, потому что я получаю ошибку компилятора, говоря, что void не применяется. Если я попытался поместить его в цикл в основном методе, он говорит мне, что существуют несовместимые типы. То, что найдено, является пустотой, требуется int [], но исходным условием присваивания является использование метода void. Итак, с учетом сказанного, следует ли мне изменить метод от void до int [] для целей тестирования и передать назначение как пустоту, или есть способ распечатать вывод этого кода с помощью void, и я просто пропущу Это?Как я могу напечатать результат из метода void

public static void sort(int[] array) 
     { 
     int[] y = new int[array.length]; 
     for(int i = 0; i<=array.length-1; i++) 
     { 
      for(int j = i+1; i<=array.length-1; j++) 
      { 
      if(array[i] < array[j]){ 
       y[i] = array[j]; 
      } 
      if(array[i] >= array[j]){ 
       y[i] = array[i]; 
      } 
     } 
      for(int k = 0; k<y.length; k++){ 
      System.out.println(y[k]); 
      } 
     } 
    } //end of sort method 
+1

После вызова метода сортировки вы можете просто распечатать массив, который вы отправили этому методу. – MadProgrammer

+0

Исправление вашего отступов было бы неплохо. Посмотрите, какой беспорядок - вам даже придется комментировать закрытие скобки, чтобы найти его! –

ответ

2

Проблема заключается в том, что вы создаете новый локальный массив внутри вашего метода сортировки, который, очевидно, не может быть возвращен из-за ограничения вашего назначения.

int[] y = new int[array.length]; 

Ваш метод недействителен, поскольку пройденный массив останется без изменений. Вам нужно выполнить сортировку на месте, т. Е. Без создания нового массива. Так что, если вы передадите его из основного метода, он будет отсортирован, и вы можете его распечатать.

Bubble sort должен использовать метод swap, поэтому вам нужна только одна временная переменная.

0

Arrays.sort() изменяет массив вы передаете. Так что, если вы перебрать array объекта и распечатать элементы ПОСЛЕ вашего вызова Arrays.sort(), он напечатает для вас.

+0

Вызов Arrays.sort во введении к классу программирования может и не быть, о чем идет речь. –

0

Поскольку у вас есть метод сортировки void, вы хотите, чтобы он сортировал массив как побочный эффект. То есть, измените значения в ссылке int[] array, которую вы передали в качестве параметра метода. Затем вы можете распечатать его с основного.

1

Для того, чтобы напечатать массив, в методе main вам нужно

//code that initializes the array or whatever 
sort(myArray); 
System.out.println(Arrays.toString(myArray)); //print the array modified by the previous method call 

Также обратите внимание на то, что @ A4L сказал о локальном массиве. Работа с массивом, который вы передаете в качестве параметра в свой метод, не создает новый.

+0

... для удобной печати без петли – A4L

Смежные вопросы