gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:11:42 26 4
gpt4 key购买 nike

我正在尝试开发一个程序,每次按下按钮时都会生成 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/

26 4 0