Я начинаю программировать, и у меня вопрос относительно возвращаемого значения от функции.Почему функция void возвращает значение?
Я изучаю Java.
У меня есть код из моей книги, в котором есть классический выбор.
Теперь очевидно, что код из книги работает. Тем не менее, эти три строки в основной функции являются основой моего вопроса:
ИНТ [] а = новый INT [] {1,9,2,8,3,7,4,6,5} ;
вид (а);
if (по возрастанию (a)) System.out.println («Works»);
Так что мой вопрос:
В строке 2, как я могу получить отсортированный а [], если функция сортировки() является недействительным?
И не должно быть: a = sort (a)?
public class SelectionSort
{
public static void main(String[]args)
{
int []a=new int[]{1,9,2,8,3,7,4,6,5};
sort(a);
if(ascending(a)) System.out.println("Virðist virka");
else System.out.println("Virkarekki");
}
public static void sort(int[]a)
{
if(a.length<2) return;
int i=0;
while(i!=a.length)
{
int k=i+1;
while(k!=a.length)
{
if(a[k]<a[i])
{
int tmp=a[i];
a[i]=a[k];
a[k]=tmp;
}
k++;
}
i++;
}
}
public static boolean ascending(int[]a)
{
if(a.length<2) return true;
int i=1;
while(i!=a.length)
{
if(a[i-1]>a[i]) return false;
i++;
}
return true;
}
}
Метод 'sort' изменяет массив, который вы передаете, поэтому вам не нужно иметь тип возврата. – August
Как указано в @August, метод 'sort' изменяет исходный массив. Это связано с тем, как Java обрабатывает параметры: http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – Alex