我正在写一个程序来读写文件。它有50个数字,如果用户输入的数字大于50,则应要求用户再次输入。我的问题是错误,它应该显示消息框,但再次返回到文本字段进行输入。还有一个问题,例如,用户1输入1,用户2输入1,它应该告诉用户2“请输入另一个已经输入的数字”。如何编写和读取文件。 这是我的代码:
public class JavaFXApplication24 extends Application {
private int seatInput;
@Override
public void start(Stage primaryStage) {
StackPane pane = new StackPane();
HBox hbox = new HBox();
Label num = new Label("Please enter the number from 1 to 50: ");
TextField numInput = new TextField();
File file = new File("NumberBook.txt");
Button ok = new Button("ok");
ok.setOnAction((new EventHandler<ActionEvent>(){
public void handle(final ActionEvent event ){
try{
if ((numInput.getText().equals(1)&& numInput.getText().equals(50))){
}else{
String input = JOptionPane.showInputDialog("Please enter again");
}
}
catch (HeadlessException | NumberFormatException e) {
}
try {
PrintWriter output = new PrintWriter(file);
} catch (IOException ex) {
System.out.printf("error", ex);
}
try {
Scanner input1 = new Scanner(file);
System.out.printf("Entered: %s", seatInput);
} catch (FileNotFoundException ex) {
System.out.printf("error", ex);
}
}
}));
hbox.getChildren().addAll(num,numInput,ok);
pane.getChildren().addAll(hbox);
Scene secondScene = new Scene(pane, 600, 400);
// New window (Stage)
Stage newWindow = new Stage();
newWindow.setTitle("Booking and Timing");
newWindow.setScene(secondScene);
newWindow.show();
}
}
答案 0 :(得分:0)
快速浏览一下,您的代码存在一些问题:
1)if ((numInput.getText().equals(1)&& numInput.getText().equals(50)))
。这里有两个问题。首先,正如fabian指出的那样,此语句将始终为false。其次,从您的问题来看,我认为您希望用户输入一个1到50之间的数字,但是在这里您要检查他们是否输入1 和 50(这也意味着它始终是错误的)。>
2)JOptionPane.showInputDialog("Please enter again")
因为您的应用程序是JavaFX,所以应该使用内置的Dialog。
现在要回答您的问题,可以在显示错误消息后立即在文本字段上调用requestFocus。第二个问题似乎是您想要应用程序中的某些联网功能,这给它增加了很多复杂性。您可能需要对如何使用Java进行研究。