Я пытаюсь ввести длину массива и затем ввести элементы массива. Я смог проверить наибольшее значение в случае 1, но я делаю случай 2, чтобы повторно сортировать массив от наименьшего числа до самого большого, но я не смог этого сделать.Не удалось сортировать массив int с использованием метода свопинга в Java
Вот мой код:
package peopleinfo;
import java.util.Scanner;
public class mainapp
{
public static void main(String[] args)
{
Scanner sc1 = new Scanner(System.in);
System.out.println("please input the length of the array:");
arraybuilder(sc1.nextInt());
}
public static void arraybuilder(int i)
{
Scanner sc = new Scanner(System.in);
int[] array = new int[i];
for (int j = 0; j < array.length; j++)
{
int o = j;
System.out.println("please input the" + ++o + " number");
array[j] = sc.nextInt();
}
for (int j2 = 0; j2 < array.length; j2++)
System.out.print(array[j2] + "\t");
System.out.println("what do you want to do ?\n 1 check the biggest number\n2 sort the array from the smallest\nterminate the app");
int dwc = sc.nextInt();
switch (dwc)
{
case 1:
int k = 0;
int max = 0;
for (int j = 0; j < array.length; j++)
{
if (array[j] > k)
{
max = j;
k = array[j];
}
}
System.out.println("the largest number is " + array[max]);
break;
case 2:
int temp;
boolean fixed = false;
while (fixed = false)
{
fixed = true;
for (int u = 0; u < array.length - 1; u++)
{
if (array[u] > array[u + 1])
{
temp = array[u + 1];
array[u + 1] = array[u];
array[u] = temp;
fixed = false;
}
}
}
for (int j = 0; j < array.length; j++)
{
System.out.print(array[j] + "\t");
}
break;
default:
System.out.println("Error, please rerun the code:)");
break;
}
}
}
Я не понимаю, что я делаю неправильно?
** P.N: ** должно быть 'while (! Fixed) {' а не 'while (fixed = false) {'. –
Выполнение изменений в приведенном выше комментарии не устранит проблему, поскольку используемый алгоритм сортировки неверен. Цикл 'while' не имеет никакой цели и должен быть удален. –