1

我已经完成了这次期中考试的所有编码,但我遇到了这个障碍。主要是,当他们将一个 JTextField 留空时,我似乎无法让我的代码向用户抛出错误消息。我认为我在这里遇到的问题是我已经为每个 JTextFields(使用 Double.parseDouble)声明了双变量,并且就我所有的搜索而言,没有办法检查空的双精度值。我尝试了一种奇怪的解决方法,我为相同的 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 );
  }
4

3 回答 3

1

一个简单的测试是:

if (homework1JTextField.getText().trim().equals("")) {
    // throw error
}
于 2013-02-15T01:21:02.900 回答
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;
    }
}
于 2013-02-15T00:52:20.890 回答
0

我会说为什么不为每组比较分配中间布尔变量。在 if 中使用这些布尔值。

打印出布尔值的值,因为你的情况很复杂,这里有很多事情可能出错。

于 2013-02-14T20:56:36.910 回答