У меня проблемы с моей программой (анимированный quicsort). У меня есть 3 класса. Один для быстрой сортировки (QuickSort), один для сохранения переменных (Save), необходимый для третьего класса GUI (GUI). Класс быстрой сортировки работает нормально, я могу сортировать массив без проблем. У GUI есть небольшая проблема: когда я нажимаю кнопку, он не выполняет действия, которые я в нем написал. Но самая большая проблема в том, что когда я нажимаю «попробовать запустить весь проект», ничего не происходит. Когда я запускаю отдельные классы, такие как QuickSort, это хорошо. Когда я запускаю разделенный GUI, это нормально, хотя переменных из QuickSort нет, потому что QuickSort не запускается. Но когда я запускаю весь проект, ничего ... не могли бы вы помочь?
PS Я знаю, что это не идеально, и есть некоторые возможные ошибки, если я изменил бы количество отсортированных чисел, но это не моя проблема сейчас. PSS В GUI прокомментирована реальная матрица "save", экспортированная из класса Quicksort, из-за проблемы, с которой все классы не запускаются вместе, поэтому я просто протестировал другую проблему с кнопками, которая не выполняет то, что они предполагают делать с тестовой матрицей.
Вот мои уроки:
Класс QuickSort
public class QuickSort {
//preneseni promenych
public static int x [] = Save.x;
public static int save [] [] = Save.save;
//ukladani pivotu
public static int [] pivot_save = new int [6];
public static int pivot_count = 0;
public static int [] pivot_index = new int [6];
//krok QS
public static int index = 0;
public static void main(String[] args) {
//zobrazeni puvodniho vektoru
System.out.println("Puvodni vektor: " + Arrays.toString(x));
int low = 0;
int high = x.length - 1;
//zavolani QS
quickSort(x, low, high);
//zobrazeni vysledku QS
System.out.println("Serazeny vektor: " + Arrays.toString(x));
//zobrazeni matice postupu save
System.out.println("Matice postupu razeni: ");
for (int p = 0; p < save.length; p++){
for (int k = 0; k < save [p].length; k++){
System.out.print(save [p][k] + " ");
}
System.out.println();
}
//zobrazeni pivotu
System.out.println("Pivoty: " + Arrays.toString(pivot_save));
System.out.println("Pivot pozice v matici save: " + Arrays.toString(pivot_index));
}
public static void quickSort(int[] arr, int low, int high) {
//ochrana pokud je vektor x prazdny
if (arr == null || arr.length == 0)
return;
if (low >= high)
return;
// zvolim pivot jako prostredni clen vektoru x
int middle = low + (high - low) / 2;
int pivot = arr[middle];
// urceni hranic podle pivotu
int i = low, j = high;
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
//prohozeni clenu
if (i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
//plneni matice postupu save
for (int h=0; h<arr.length; h++){
save [index] [h] = arr [h];
}
pivot_save [index] = pivot;
pivot_index [index] = middle;
index++;
}
}
// recurzivne volat QS na neroztrizene casti
if (low < j)
quickSort(arr, low, j);
if (high > i)
quickSort(arr, i, high);
}
}
Класс Save
public class Save {
static int [] x = { 9, 2, 4, 7, 3, 7, 10 };
static int [] [] save = new int [6] [x.length];
}
Класс GUI
public class GUI extends Application {
int index = 0;
Button next, back;
Label label;
int [] [] save = {{1,2,3},{4,5,6},{7,8,9}};
//public static int save [] [] = Save.save;
public static int [] pivot_index = QuickSort.pivot_index;
@Override
public void start(Stage primaryStage) throws Exception {
label = new Label(Arrays.toString(save[index]));
back = new Button();
back.setText("Back");
back.setOnAction(e -> {
if (index != 0){
zpatky();
}
});
next = new Button();
next.setText("Next");
next.setOnAction(e -> {
dalsi();
});
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(8);
grid.setHgap(10);
GridPane.setConstraints(label, 5, 6);
GridPane.setConstraints(back, 5, 13);
GridPane.setConstraints(next, 6, 13);
grid.getChildren().addAll(label, back, next);
Scene scene = new Scene(grid, 250, 180);
primaryStage.setScene(scene);
primaryStage.setTitle("QuickSort");
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
private void dalsi(){
index ++;
}
private void zpatky(){
if (index != 0){
index--;
}
}
}