0

私はJavaの初心者であり、JOptionPanesを使用して変数を入力しようとしています。入力変数を検証しようとしている間、入力ステートメントをこのwhileループに入れました。

while (input==false)
{
    inputNumberCoeffa=JOptionPane.showInputDialog("Enter co-efficient of X: ");
    inputNumberConsta=JOptionPane.showInputDialog("Enter Constant Number: ");
    inputNumberPowa=JOptionPane.showInputDialog("Enter Power Bracket should be raised to:");
    if (inputNumberCoeffa==null
        || inputNumberConsta==null
        || inputNumberPowa==null
        ||inputNumberCoeffa.isEmpty()
        || inputNumberConsta.isEmpty()
        || inputNumberPowa.isEmpty()
        || inputNumberCoeffa.matches("[A-Za-z]*")
        || inputNumberConsta.matches("[A-Za-z]*")
        || inputNumberPowa.matches("[A-Za-z]*"))
    {
        JOptionPane.showMessageDialog(null,"Please Enter a Number");        
    }
    else 
    {
        input=true;
    }
    double inputNumberCoeff=Double.parseDouble(inputNumberCoeffa);
    double inputNumberConst=Double.parseDouble(inputNumberConsta);
    double inputNumberPow=Double.parseDouble(inputNumberPowa);
}

このwhileループは、下部のparseDoubleステートメントを不正なデータから保護するために作成されました。ただし、エラーメッセージを表示するには、データの各ポイントに入力する必要があります。各データ入力ポイントの周りにWhileループを配置することはできますが、この質問を解決するためのより効率的な方法はありますか?

4

2 に答える 2

2

ダイアログチュートリアルをご覧ください。

できることは、入力を検証して実装するクラスを作成してKeyListenerから、を作成JOptionPaneして呼び出しaddKeyListener()、リスナーに渡すことです。したがって、ユーザーがJOptionPaneに入力するときに、入力内容をフィルター処理できます(また、Enter何も入力せずにヒットした場合は、プロパティを「0」などに設定します)。他のイベントを処理する必要がある場合は、リスナーを追加することもできます(PropertyChangeListenerも参照)。

于 2012-07-15T21:35:06.390 に答える
1

doubleを返し、whileループ、必要なすべてのチェック、およびparse doubleステートメントを含むメソッドを作成し、それを使用してinputNumberXXX変数を設定します。この方法では、同じメソッドを3回呼び出すだけなので、コードを3回コピーして貼り付ける必要はありません。

于 2012-07-15T21:27:04.317 に答える