Программа Neatbens 11 Java FX не будет запускать весь проект вместе (только по отдельности) - PullRequest
0 голосов
/ 12 января 2020

У меня проблемы с моей программой (анимированный 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--;
    }
}

}
...