Предполагается, что эта программа читает файл с товаром, кодом и ценой. Я вывел его на экран по указанному индексу в массиве. Например, Товар [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
С вашим текущим кодом вам придется поменять местами элементы во всех массивах. Итак, когда вы меняете местами 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 ничто не мешает вам учиться вне класса.
Спасибо за совет, настроил и запустил!
Инкапсуляция значений в один объект было бы разумным решением, если это невозможно, тогда вам, вероятно, понадобится «прокси-массив», который действует как поиск по индексу в других массивах Например