【发布时间】:2016-04-17 17:44:52
【问题描述】:
我的任务是制作一款名为“猜数字”的游戏。用户猜测一个介于 1 和 1000 之间的数字,单击“确定”并收到一条消息,说明它是否正确、过高或过低。我的问题是事件处理。当我按下“确定”时,程序会崩溃。我做错了什么?
package application;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class GjettTalletSpill extends Application implements EventHandler<ActionEvent> {
Button ok;
Label text;
Label message;
TextField TF;
public static void main(String[] args) {
launch(args);
}// Main.
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Gjett tallet spill");
ok = new Button("OK");
ok.setOnAction(this);
ok.setPrefSize(100,20);
text = new Label("Guess a number between 1 and 1000: ");
TF = new TextField();
message = new Label("");
GridPane gp = new GridPane();
gp.add(text,1,1);
gp.add(TF,3,1);
gp.add(message,2,2);
gp.add(ok,2,3);
Scene scene = new Scene(gp,600,150);
primaryStage.setScene(scene);
primaryStage.show();
}
@Override
public void handle(ActionEvent event) {
int uGuessed;
int theNumber;
tallet = 1 + (int)(Math.random() * 1000);
uGuessed = Integer.parseInt(TF.getText());
while (uGuessed != theNumber){
if (uGuessed<theNumber){
message.setText("The number was too low. Try again!");
} else {
message.setText("The number was too high. Try again!");
}// if/else.
}// while.
message.setText("Congratulations! You guessed the roght number! :D");
}// ActionEvent.
}// Class.
【问题讨论】:
-
你遇到了什么异常?请也发布一下
-
什么是
tallet?此外,while 循环根本没有意义......你永远不会改变循环体内条件中的任何值。 -
没有出现异常。它只是冻结..
-
您的程序似乎更有可能陷入无限循环并死机,而不是实际崩溃。你明白其中的区别吗?
-
"Tallet" 是数字。我只是把它翻译成英文并忘记了那个。非常好点fabian!
标签: java eclipse javafx event-handling