1

進行中のこの中間試験のためにすべてのコーディングを完了しましたが、この 1 つの障害に遭遇しました。主に、ユーザーが 1 つの JTextField を空のままにしておくと、ユーザーにエラー メッセージをスローするコードを取得できないようです。私がここで抱えている問題は、JTextFields ごとに (Double.parseDouble を使用して) double 変数を宣言したことであり、すべての検索が行われる限り、空の double 値をチェックする方法はありません。同じ JTextfields に対して別の文字列変数のセットを宣言するという奇妙な回避策を試しました (つまり、それらにはすでに double 変数が関連付けられています)。

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

これらの比較グループのそれぞれに中間ブール変数を割り当ててみませんか。ifでこれらのブール値を使用します。

かなり複雑な場合はブール値を出力します。ここでは多くの問題が発生する可能性があります。

于 2013-02-14T20:56:36.910 に答える
0

問題を解決するにはさまざまな方法があります。これが1つです。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 に答える