我已经完成了这次中期考试的所有编码,但是我遇到了这个问题。主要是,我似乎无法让我的代码在用户将一个JTextField留空时向用户抛出错误消息。我认为我在这里遇到的问题是我已经为每个JTextFields(使用Double.parseDouble)声明了双变量,并且就我所有的搜索而言,没有办法检查空的double值。我尝试了一个奇怪的解决方法,我为相同的JTextfields声明另一组String变量(即它们已经有归属于它们的双变量),然后测试stringVariable.equals(“”),但这也不起作用。
我尝试过直接从JTextField - myJTextField.getText()。equals(“”) - 并且不会抛出我的错误消息。
请记住,我正处于Java课程的开始阶段,所以这应该是一个简单的解决方案。
相关部分的代码如下:
// IF statement to display error message if no name entered
// OR no value input for any week's Homework
// OR no JCheckBox isSelected
// remember to check against the null string or non-selection of JCheckBox
if ( ( name.equals ( "" ) ) ||
(homework1JTextField.getText().equals(""))||
//Test against incorrect range of values for homework grades
(tut1 < 0 || tut1 > 10)||
(tut2 < 0 || tut2 > 10)||
(tut3 < 0 || tut3 > 10)||
(tut4 < 0 || tut4 > 10)||
(tut5 < 0 || tut5 > 10)||
(tut6 < 0 || tut6 > 10)||
(tut7 < 0 || tut7 > 10)||
(!discussionBoardZeroJCheckBox.isSelected() &&
!discussionBoardOneTwoJCheckBox.isSelected() &&
!discussionBoardThreeFourJCheckBox.isSelected() &&
!discussionBoardFiveSixJCheckBox.isSelected() &&
!discussionBoardSevenJCheckBox.isSelected()
)
)
{
// display error message
JOptionPane.showMessageDialog( null,
"Full Name, all homework points and at least one discussion board checkbox are
all required information!",
"Missing Information", JOptionPane.ERROR_MESSAGE );
}
答案 0 :(得分:0)
我想说为什么不为每个比较组分配中间布尔变量。在if中使用这些布尔值。
打印出布尔值的值,因为如果它非常复杂,这里有很多问题可以解决。
答案 1 :(得分:0)
有多种方法可以解决问题。这是一个。如果用户没有键入内容或仅键入空格,则将JTextField替换为JTextFieldWithDefault以返回超出范围的值(-1)。您现有的代码保持不变,现在可以按预期工作。
public class JTextFieldWithDefault extends JTextField {
public JTextFieldWithDefault() {
super();
}
@Override
public String getText() {
String s = super.getText();
return s.trim().equals("")?"-1":s;
}
}
答案 2 :(得分:0)
简单的测试是:
if (homework1JTextField.getText().trim().equals("")) {
// throw error
}