java在javafx应用程序中有没有替代堆叠if的方法来检查许多空白字段?
我对java(以及一般的编程)不熟悉,正在通过将基本电子表格转换为javafx应用程序来学习。 为此,我使用: 爪哇;JavaFX12 FXML&;用于GUI的scenebuilder
大约有10个输入字段,它们不能为空(应用程序崩溃,因为getText似乎在空白字段上失败)
我已经编写了堆叠的if语句来检查空白字段,然后打印一条错误消息,如果是这样的话,返回可以停止进程,而不会导致应用程序崩溃
Switch语句似乎并不比if语句更好
有没有一种方法可以减少代码行数
package SteelDesign_BoltedConnection;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TextArea;
import javafx.event.ActionEvent;
public class mainController {
//Header details
@FXML private TextField refNo;
@FXML private TextField jobDesc;
@FXML private TextField author;
@FXML private DatePicker date;
//Design data
@FXML private TextField desShear;
@FXML private TextField boltSize;
@FXML private TextField boltGrade;
@FXML private TextField tensStrengthBolt;
@FXML private TextField noBolts;
@FXML private TextField shearPlanes;
@FXML private TextField edgeDist;
@FXML private TextField plyThick;
@FXML private TextField tensStrengthPly;
//Constants
@FXML private TextField phiBolt;
@FXML private TextField phiPly;
//Results - Bolt Shear
@FXML private TextField boltDesShear;
@FXML private TextField boltCap;
@FXML private TextField loadFactorBolt;
//Results - Ply Shear & Bearing
@FXML private TextField plyDesShear;
@FXML private TextField plyCap;
@FXML private TextField loadFactorPly;
//Output messages
@FXML private TextArea outputMsg;
public void run(ActionEvent clickRun) {
String outputMSG;
//Check fields are populated
if(desShear.getText().isBlank()) {
outputMSG = "Design shear field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(boltSize.getText().isBlank()) {
outputMSG = "Bolt size field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(tensStrengthBolt.getText().isBlank()) {
outputMSG = "Bolt strength field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(noBolts.getText().isBlank()) {
outputMSG = "Number of bolts field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(shearPlanes.getText().isBlank()) {
outputMSG = "Number of shear planes field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(edgeDist.getText().isBlank()) {
outputMSG = "Edge distance field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(plyThick.getText().isBlank()) {
outputMSG = "Ply thickness field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(tensStrengthPly.getText().isBlank()) {
outputMSG = "Ply strength field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(phiBolt.getText().isBlank()) {
outputMSG = "Bolt phi factor field is blank";
outputMsg.setText(outputMSG);
return;
}
else if(phiPly.getText().isBlank()) {
outputMSG = "Ply phi factor field is blank";
outputMsg.setText(outputMSG);
return;
}
//Get field values
double desSHEAR = Double.parseDouble(desShear.getText());
double boltSIZE = Double.parseDouble(boltSize.getText());
double tensStengthBOLT = Double.parseDouble(tensStrengthBolt.getText());
double noBOLTS = Double.parseDouble(noBolts.getText());
double shearPLANES = Double.parseDouble(shearPlanes.getText());
double edgeDIST = Double.parseDouble(edgeDist.getText());
double plyTHICK = Double.parseDouble(plyThick.getText());
double tensStrengthPLY = Double.parseDouble(tensStrengthPly.getText());
double phiBOLT = Double.parseDouble(phiBolt.getText());
double phiPLY = Double.parseDouble(phiPly.getText());
//Bolt shear calculation
}
}
# 1 楼答案
无论如何,您需要将一个字段与一个字符串相关联。这需要为每个
TextField
添加一些代码,无论是在fxml中设置userData
,还是在控制器的initialize
方法的适当数据结构中存储TextField
和String
的组合这种数据结构可以是
LinkedHashMap
: