Моя Java-программа не будет работать должным образом. Я хочу, чтобы она вводила несколько чисел в массив и помещала их в другой массив в порядке от самого низкого до самого высокого. - PullRequest
0 голосов
/ 13 июня 2019

Я хочу создать программу на Java, которая будет принимать пользовательский ввод нескольких чисел и отображать их на экране в порядке от самого высокого до самого низкого. Но это не сработает, и я не знаю почему.

Спасибозаранее Примечание (это мое первое время выкладывать что-нибудь здесь)

public class project {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] arr1 = new int[5];
        int arr2[] = new int[5];
        System.out.println("enter 5 numbers");

        for (int i=0; i<=4; i++){
            int Uinput = input.nextInt();
            arr1[i] = Uinput;
        }

        for(int b = 0; b <= 4; b++){
            for (int a = 0; a <=100;a++){
                for(int j = 0; j <=4; j++){
                    if ( a== arr1[j]){
                        arr2[b]=arr1[j];
                    }
                }
            }
        }

        System.out.println(arr2 [0]);
        System.out.println(arr2 [1]);
        System.out.println(arr2 [2]);
        System.out.println(arr2 [3]);
        System.out.println(arr2 [4]);
    } 
}

1 Ответ

0 голосов
/ 13 июня 2019

Проблема с вашими циклами заключается в том, что вы продолжаете сравнение даже после того, как вы установили свой элемент в arr2.Вот почему они все в конечном итоге как наибольшее число.Вы хотите установить каждый элемент только один раз.Вы можете попытаться вставить разрывы в каждый цикл for, но я бы нашел более простое решение:

int b = 0;
while(b < 5) {
    for (int a = 0; a <=100;a++){
        for(int j = 0; j <=4; j++){
            if (a == arr1[j]){
                arr2[b]=arr1[j];
                b++;
            }
        }
    }
}

Увеличивая b каждый раз, когда вы устанавливаете элемент, вы проверяете, что каждый элемент устанавливается только один раз.

Это говорит о том, что KevinO верен, и есть другие более эффективные способы сортировки чисел (например, ваш текущий код не может обрабатывать числа больше 100).Я бы порекомендовал проверить ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...