Использование пузырькового метода для сортировки массива в порядке возрастания. Тогда другие массивы имеют разные индексы

Предполагается, что эта программа читает файл с товаром, кодом и ценой. Я вывел его на экран по указанному индексу в массиве. Например, Товар [0], Код [0], Цена [0] по всем возможным индексам. Программа предполагает сортировку значений кода от наименьшего к наибольшему с использованием метода пузырьковой сортировки. Пока я понял это правильно. Моя проблема в том, как добиться того, чтобы все три учитывали переменные. Например, если вино, 1298, 8.99 все находятся в соответствующем индексе в [3], а затем, когда значение кода помещается в пузырьковую сортировку, оно заменяется на индекс [0]. Как сделать так, чтобы индекс цены и предмет также переключились на индекс [0]. Это моя проблема. Мы только что изучили основы Java в классе, поэтому я еще не знаю ничего продвинутого.

import java.io.File;
import java.util.Scanner;
import java.util.*;

public class test2 {

    public static void main(String[] args) throws Exception {

        File file = new File("C:\\Users\\Isiah\\Desktop\\xfiles.txt");
        Scanner input = new Scanner(file);

        System.out.println("Item \t Code \t Price");

        String[] Item = new String[7];
        int[] Code = new int[7];
        double[] Price = new double[7];

        int c = 0;
        while (input.hasNext()) {
            Item[c] = input.next();
            Code[c] = input.nextInt();
            Price[c] = input.nextDouble();
            System.out.println(Item[c] + "\t" + Code[c] + "\t" + Price[c]);
            c++;

        }
        input.close();

        // Call Bubble Method

        bubbleSort(Code, Item, Price);

        System.out.println(" ");
        System.out.println("Code \t Item \t Price");



        for (int i = 0; i < Item.length; i++) {
            System.out.println(Code[i]);



        }
    }

    // Bubble Sort Method
    static void bubbleSort(int Code[], String[] Item, double Price[]) {
        int n = Code.length;
        for (int i = 0; i < n - 1; i++)
            for (int j = 0; j < n - i - 1; j++)
                if (Code[j] > Code[j + 1]) {
                    // swap temp and score[i]
                    int temp = Code[j];
                    Code[j] = Code[j + 1];
                    Code[j + 1] = temp;

                }
    }
}




Item     Code    Price
beer    1357    12.99
apple   2357    0.5
bread   2123    1.25
wine    1298    8.99
pants   3009    6.99
sugar   2111    2.69
socks   3123    11.89

Code     Item    Price
1298
1357
2111
2123
2357
3009
3123

Инкапсуляция значений в один объект было бы разумным решением, если это невозможно, тогда вам, вероятно, понадобится «прокси-массив», который действует как поиск по индексу в других массивах Например

MadProgrammer 02.05.2018 00:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
28
1

Ответы 1

С вашим текущим кодом вам придется поменять местами элементы во всех массивах. Итак, когда вы меняете местами Code[i] и Code[j], также меняйте местами Item[i] и Item[j], а также Price[i] и Price[j].

Более объектно-ориентированным способом было бы определить класс с полями Code, Item и Price, скажем, Thing:

class Thing {
  int code;
  String item;
  double price;
}

а затем отсортируйте их по массиву: Thing[].

@IsiahJones ничто не мешает вам учиться вне класса.

Andy Turner 02.05.2018 00:48

Спасибо за совет, настроил и запустил!

Isiah Jones 02.05.2018 01:20

Другие вопросы по теме