文本输入if语句JavaFX

文本输入if语句JavaFX,java,if-statement,input,textfield,scene,Java,If Statement,Input,Textfield,Scene,我正在为我的程序使用JavaFX Netbeans和场景生成器。我正在尝试创建一个学生信息输入场景。我现在所有的输入都在工作并进入文本文件。它还显示一个成功弹出框。然而,我试图使它,如果其中一个输入是空白的,将不会输入任何内容,并会出现一个错误弹出窗口。现在,两个弹出窗口都可以工作,但是它被破坏了,只有成功出现了。无论所有输入是否存在,错误框都会出现4次。我不明白为什么,因为我有每个if语句。如果一个字段没有填写,我也不知道从哪里开始不输入任何信息 import javafx.collectio

我正在为我的程序使用JavaFX Netbeans和场景生成器。我正在尝试创建一个学生信息输入场景。我现在所有的输入都在工作并进入文本文件。它还显示一个成功弹出框。然而,我试图使它,如果其中一个输入是空白的,将不会输入任何内容,并会出现一个错误弹出窗口。现在,两个弹出窗口都可以工作,但是它被破坏了,只有成功出现了。无论所有输入是否存在,错误框都会出现4次。我不明白为什么,因为我有每个if语句。如果一个字段没有填写,我也不知道从哪里开始不输入任何信息

import javafx.collections.*;
import javafx.event.ActionEvent;
import javafx.fxml.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.text.Text;
import javafx.stage.Stage;

import java.io.*;
import java.net.URL;
import java.nio.file.*;
import java.nio.file.StandardOpenOption;
import java.util.ResourceBundle;

public class CController implements Initializable {

    @FXML
    private Button button;

    @FXML
    private Text Student;

    @FXML
    private Button Add;

    @FXML
    private ComboBox Grade;

    @FXML
    private ComboBox Type;

    @FXML
    private TextField Name;

    @FXML
    private TextField ID;

    ObservableList<String> GRADES = FXCollections.observableArrayList("9", "10", "11", "12");
    ObservableList<String> EVENTS = FXCollections.observableArrayList("Business Law and Ethics", "Buying and Merchandising", "Financial Services", "Hospitality Services", "Marketing Communications", "Sports and Entertainment Marketing", "Travel and Tourism", "Accounting Applications", "Apparel and Accessories Marketing", "Automotive Services Marketing", "Business Finance", "Business Services Marketing", "Food Marketing", "Hotel and Lodging Management", "Human Resources Management", "Marketing Management", "Quick Serve Restaurant Management", "Restaurant and Food Service Management", "Retail Merchandising", "Sports and Entertainment Marketing");

    @FXML
    private void handleButtonAction(ActionEvent event) throws IOException {
        Parent FXMLDocument2Parent = FXMLLoader.load(getClass().getResource("B.fxml"));
        Scene FXMLDocument2Scene = new Scene(FXMLDocument2Parent);
        Stage AppStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
        AppStage.setScene(FXMLDocument2Scene);
        AppStage.show();
    }


    @Override
    public void initialize(URL location, ResourceBundle resources) {
        Grade.setItems(GRADES);
        Type.setItems(EVENTS);
    }

    @FXML
    public void addtolist(ActionEvent e) throws IOException {
        Alert success = new Alert(Alert.AlertType.INFORMATION);
        success.setTitle("Information");
        success.setHeaderText(null);
        success.setContentText("Student Added");
        success.showAndWait();

        Alert nosave = new Alert(Alert.AlertType.INFORMATION);
        String idinput = ID.getText();
        SendToText("\r\n");
        SendToText(idinput);
        if (idinput.isEmpty())
            nosave.setTitle("Error");
        nosave.setHeaderText(null);
        nosave.setContentText("Please Enter All Student Information");
        nosave.showAndWait();

        String nameinput = Name.getText();
        SendToText(",");
        SendToText(nameinput);
        if (nameinput.isEmpty())
            nosave.setTitle("Error");
        nosave.setHeaderText(null);
        nosave.setContentText("Please Enter All Student Information");
        nosave.showAndWait();

        String grade;
        grade = (String) Grade.getValue();
        SendToText(",");
        SendToText(grade);
        if (grade.isEmpty())
            nosave.setTitle("Error");
        nosave.setHeaderText(null);
        nosave.setContentText("Please Enter All Student Information");
        nosave.showAndWait();

        String event;
        event = (String) Type.getValue();
        SendToText(",");
        SendToText(event);
        if (event.isEmpty())
            nosave.setTitle("Error");
        nosave.setHeaderText(null);
        nosave.setContentText("Please Enter All Student Information");
        nosave.showAndWait();
    }


    private void SendToText(String cartone) throws IOException {
        Path file = Paths.get("C:/Users/Shaheer.K/Documents/Shaheer/IAiffy/src/ia/Extra/list.txt");
        byte[] data = cartone.getBytes();
        OutputStream output = null;
        try {
            output = new
                    BufferedOutputStream(Files.newOutputStream(file, StandardOpenOption.APPEND));
            output.write(data);
            output.flush();
            output.close();
        } catch (IOException e) {
            System.out.println("Message: " + e);
        }
    }
} 
导入javafx.collections.*;
导入javafx.event.ActionEvent;
导入javafx.fxml.*;
导入javafx.scene.*;
导入javafx.scene.control.*;
导入javafx.scene.text.text;
导入javafx.stage.stage;
导入java.io.*;
导入java.net.URL;
导入java.nio.file.*;
导入java.nio.file.StandardOpenOption;
导入java.util.ResourceBundle;
公共类CController实现可初始化{
@FXML
私人按钮;
@FXML
私塾学生;
@FXML
私人按钮添加;
@FXML
私人组合箱等级;
@FXML
专用组合框类型;
@FXML
私有文本字段名;
@FXML
私有文本字段ID;
ObservableList等级=FXCollections.observableArrayList(“9”、“10”、“11”、“12”);
ObservableList EVENTS=FXCollections.observableArrayList(“商业法与道德”、“采购与营销”、“金融服务”、“酒店服务”、“营销传播”、“体育与娱乐营销”、“旅游与旅游”、“会计应用”、“服装与配件营销”、“汽车服务营销”,“商业金融”、“商业服务营销”、“食品营销”、“酒店和住宿管理”、“人力资源管理”、“营销管理”、“快速服务餐厅管理”、“餐厅和食品服务管理”、“零售营销”、“体育和娱乐营销”);
@FXML
私有void handleButtonAction(ActionEvent事件)引发IOException{
父FXMLDocument2Parent=FXMLLoader.load(getClass().getResource(“B.fxml”);
场景FXMLDocument2Scene=新场景(FXMLDocument2Parent);
Stage AppStage=(Stage)((节点)event.getSource()).getScene().getWindow();
应用阶段设置场景(FXMLDocument2Sene);
AppStage.show();
}
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
等级。设置项目(等级);
类型。设置项(事件);
}
@FXML
公共void addtolist(ActionEvent e)引发IOException{
警报成功=新警报(Alert.AlertType.INFORMATION);
成功。设置标题(“信息”);
成功。setHeaderText(空);
成功。setContentText(“学生添加”);
成功。展示和等待();
Alert nosave=新警报(Alert.AlertType.INFORMATION);
字符串idinput=ID.getText();
SendToText(“\r\n”);
SendToText(输入);
if(idinput.isEmpty())
nosave.setTitle(“错误”);
nosave.setHeaderText(空);
nosave.setContentText(“请输入所有学生信息”);
nosave.showAndWait();
String nameinput=Name.getText();
SendToText(“,”);
SendToText(名称输入);
if(nameinput.isEmpty())
nosave.setTitle(“错误”);
nosave.setHeaderText(空);
nosave.setContentText(“请输入所有学生信息”);
nosave.showAndWait();
串级;
grade=(字符串)grade.getValue();
SendToText(“,”);
SendToText(职系);
if(grade.isEmpty())
nosave.setTitle(“错误”);
nosave.setHeaderText(空);
nosave.setContentText(“请输入所有学生信息”);
nosave.showAndWait();
字符串事件;
事件=(字符串)类型。getValue();
SendToText(“,”);
SendToText(事件);
if(event.isEmpty())
nosave.setTitle(“错误”);
nosave.setHeaderText(空);
nosave.setContentText(“请输入所有学生信息”);
nosave.showAndWait();
}
私有void SendToText(字符串cartone)引发IOException{
Path file=Path.get(“C:/Users/Shaheer.K/Documents/Shaheer/IAiffy/src/ia/Extra/list.txt”);
byte[]data=cartone.getBytes();
OutputStream输出=null;
试一试{
输出=新
BufferedOutputStream(Files.newOutputStream(file,StandardOpenOption.APPEND));
输出。写入(数据);
output.flush();
output.close();
}捕获(IOE异常){
System.out.println(“消息:+e”);
}
}
} 

if
语句之后缺少
{
}
。这样,它们只适用于下一行。我更新了代码,使其按照标准缩进块(使用IDE工具,如IntelliJ,我建议使用)。当代码适当缩进时,Jorn Vernee指出的错误更容易发现。(if语句只控制设置警报标题的逻辑,而不是决定是否显示警报)。@JornVernee我做了这些,效果很好,不敢相信我仔细看过了。然而,if(input.isEmpty)这个命令对文本字段有效,但对组合框无效。你知道如何识别空的组合框吗?