未考虑非法输入时:
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.TextField; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.HBox; import javafx.scene.text.Text; import javafx.stage.Stage; public class Test extends Application{ public static void main(String[] args) { Test.launch(args); } public void start(Stage stage ){ stage.setTitle("Year Testing"); AnchorPane root = new AnchorPane(); HBox hbox1 = new HBox(8); Text text = new Text("The Number of Year: "); final Text result = new Text(); final TextField tf = new TextField(); Button btn = new Button("Enter"); hbox1.getChildren().addAll(text, tf, btn); btn.setOnAction(new EventHandler<ActionEvent>(){ @Override public void handle(ActionEvent actEvt) { if(check(Integer.parseInt(tf.getText()))) result.setText(Integer.parseInt(tf.getText())+" Good"); else result.setText(Integer.parseInt(tf.getText())+" Bad"); } }); AnchorPane.setTopAnchor(hbox1, 60.0); AnchorPane.setLeftAnchor(hbox1, 30.0); root.getChildren().add(hbox1); AnchorPane.setTopAnchor(result, 90.0); AnchorPane.setLeftAnchor(result, 30.0); root.getChildren().
add(result); stage.setScene(new Scene(root, 400, 200)); stage.show(); } public boolean check(int num){ boolean re = false; if((num % 4) == 0) re = true; if((num % 100) == 0) re = false; if((num % 400) == 0) re = true; return re; } }
正常输入:
非法输入:
原因分析:
在使用Integer.parseInt(tf.getText())函数时没有考虑到非法输入的情况。
改进:
btn.setOnAction(new EventHandler<ActionEvent>(){ @Override public void handle(ActionEvent actEvt) { try{ if(check(Integer.parseInt(tf.getText()))) result.setText(Integer.parseInt(tf.getText())+" Good"); else result.setText(Integer.parseInt(tf.getText())+" Bad"); } catch(Exception e){ result.setText("Illegal Input!"); } } });
效果: