[英]Cannot invoke isEmpty() on the primitive type int or double
我正在编写一个 JavaFX 应用程序,我将我的 JavaFX TableView 连接到我的 Sqlite 数据库,我在这里尝试做的是,如果文本字段为空,那么它会要求用户填写所有数据。 但是,因为在我的 Sqlite 数据库中我有两组整数数据集和一组双精度数据集,所以我无法为这三组数据调用 isEmpty 。 但是,我不能将它们转换为字符串,因为稍后我需要进行计算。 另一个方面是最后一点代码,当用户想要填写数据以添加一组新数据时,他可以清除他在那些文本字段中写的任何内容,但是,我不确定是什么整数和双精度代码,而不是“expeditionDate.setText(null);”。 先感谢您。
String query = null;
Connection connection = null;
ResultSet resultSet = null;
PreparedStatement preparedStatement;
Expedition user = null;
private boolean update;
int studentId;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
private void save(MouseEvent event) {
connection = DbConnect.connect();
String Date = expeditionDate.getText();
double Time = Double.valueOf(expeditionTime.getText());
int Altitude = Integer.parseInt(expeditionAltitude.getText());
int Distance = Integer.parseInt(expeditionDistance.getText());
String Notes = expeditionNotes.getText();
if (Date.isEmpty() || Time.isEmpty() || Altitude.isEmpty() || Distance.isEmpty()|| Notes.isEmpty()) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setHeaderText(null);
alert.setContentText("Please Fill All DATA");
alert.showAndWait();
} else {
getQuery();
insert();
clean();
}
}
@FXML
private void clean() {
expeditionDate.setText(null);
expeditionTime.setText(null);
expeditionAltitude.setValue(null);
expeditionDistance.setValue(null);
expeditionNotes.setText(null);
}
如果 getText() 为空但执行其他检查和更好的空处理,Double.valueOf 将抛出异常 -
改变
双倍时间 = Double.valueOf(expeditionTime.getText());
到
双倍时间 = Double.valueOf(expeditionTime.getText());
与 int 相同 - 将 int Altitude 更改为 Integer Altitude
恕我直言,如果您不确定它是否设置正确,则不应尝试将文字解析为数值。 您的问题是您无法检查该值是否为空,因为原始类型没有内置的isEmpty
方法。
private boolean isEmpty(String value) {
return value == null || value.trim().length() == 0;
}
我将使用上述方法检查expeditionTime.getText()
是否为 null 或为空,如果是,则使用默认值即。 0.0
或您想要的任何默认值。
在您尝试处理数据并保存或更改数据库之前,进行测试以确保所需数据就位:
@FXML
private void save(MouseEvent event) {
if (aFormFieldIsEmpty()) {
new Alert(Alert.AlertType.WARNING, "One or more fields on the form is empty!\n"
+ "Data must be provided in all fields (except Notes)!").showAndWait();
return;
}
connection = DbConnect.connect();
String Date = expeditionDate.getText();
double Time = Double.valueOf(expeditionTime.getText());
int Altitude = Integer.parseInt(expeditionAltitude.getText());
int Distance = Integer.parseInt(expeditionDistance.getText());
String Notes = expeditionNotes.getText();
getQuery();
insert();
clean();
}
@FXML
public boolean aFormFieldIsEmpty() {
return expeditionDate.getText().isEmpty() ||
expeditionTime.getText().isEmpty() ||
expeditionAltitude.getText().isEmpty() ||
expeditionDistance.getText().isEmpty();
}
@FXML
private void clean() {
expeditionDate.clear();
expeditionTime.clear();
expeditionAltitude.clear();
expeditionDistance.clear();
expeditionNotes.clear();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.