java - 标签数组。素数生成器。 JavaFX

标签 java arrays javafx label primes

我正在尝试开发一个程序,每次按下按钮时都会生成 10 个素数,但我很挣扎。识别素数的代码是正确的,但我收到错误 NullPointerException 可能是因为我处理标签数组的方式很糟糕。我将粘贴下面的代码,感谢您提供有关问题所在的任何提示。

public class PrimeGenerator extends Application {

    Button generate;
    Label listNumbers;
    int i;
    int multiple = 2;
    int number = 2;
    int z = 1;
    int t = 0;
    Label[] primeList;

    @Override
    public void start(Stage primaryStage) throws Exception {
        VBox root = new VBox();
        generate = new Button("Generate 10 more primes!");
        generate.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent e) {
                primeList = new Label[10];
                while (i < primeList.length) {
                    multiple = 2;
                    while (multiple < number) {
                        t = number % multiple;
                        if ((t == 0)) {
                            z = 0;
                        }
                        multiple++;
                    }

                    // Here I'd like to add the prime number to the array while also adding the Label to the Vbox

                    if ((z == 1)) {
                        primeList[i].setText(Integer.toString(number));
                        root.getChildren().add(primeList[i]);
                        i++;
                    }
                    z = 1;
                    number++;
                }
            }
        });

        root.getChildren().add(generate);

        Scene scene = new Scene(root);
        primaryStage.setTitle("Prime Numbers Generator");
        primaryStage.setScene(scene);
        primaryStage.show();

    }
}

最佳答案

我认为您忘记初始化数组元素

....
primeList[i] = new Label();
primeList[i].setText(Integer.toString(number));
....

您也可以在一行中

primeList[i] = new Label(Integer.toString(number));

例如

                if ((z == 1)) {
                    primeList[i] = new Label();
                    primeList[i].setText(Integer.toString(number));
                    root.getChildren().add(primeList[i]);
                    i++;
                }

或者,您可以提前预先创建元素:

        ...
        @Override
        public void handle(ActionEvent e) {
            primeList = new Label[10];
            for(int labelIdx=0; labelIdx<primeList.length; labelIdx++)
              primeList[labelIdx] = new Label();
            while (i < primeList.length) {
        ...

关于java - 标签数组。素数生成器。 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40950658/

相关文章:

Java Scanner hasNextInt() 导致无限循环

php - 按值排序数组并存储在变量中

java - 通过对数组进行排序来创建排名列表

javascript - 使用 Array.from( Array(n) ).map(String) 的 24 小时下拉菜单

JavaFX Maven 插件 : com. zenjava - jfx :jar to include all depedencies?

java - Spring:取消一个@Scheduled注解的任务

Java cucumber : Take @CucumberOptions from external source like a property file

java - 在 Java 中迭代格式化字符串的特定部分

java - 获取同一组中所有选定的切换按钮

java - 我可以将不同的 Canvas 笔划添加到数组中吗?