1

この情報をファイルに書き込むためのフォームとFnameメソッドがLnameあります。Date

Fnameまたは数字を含む場合Lname、プログラムはエラーメッセージを表示し、以下のすべてのステートメントを実行せず (ファイルへの書き込みや乱数の生成など)、終了しません。私はこのようにする方法がわからないので、私のコードでは、Fname または Lname に数字がある場合は exit と書きます。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)   {                                         
    try{
        setFName(jTextField1.getText());
        if(havedigit(getFName())==true) { 
            System.exit(1);
        }
        setLName(jTextField2.getText());
        if(havedigit(lastName)==true) {
            System.exit(1);
        }
        WriteToFile(getFName());
        WriteToFile(getLName());
        setDate(Integer.parseInt(jTextField3.getText()));
        WriteToFile(String.valueOf(getDate()));
        Random rnd1=new Random();
        Registration_Number=rnd1.nextInt(100);
        setRegNum(Registration_Number);
        WriteToFile(String.valueOf(getRegNum()));
        jLabel6.setText(String.valueOf(getRegNum()));
    }
    catch(Exception e){
        jLabel6.setText("Error!");
    }
}                                        

public boolean havedigit(String in){
    for(int i=0;i<in.length();i++){
        if(Character.isDigit(in.charAt(i)))  return true;
    }
    return false;
}

助けてください!

4

5 に答える 5

2

そのため、 Checked exceptionsが必要です。SomeException代わりにスローSystem.exit(1)して、ブロックで適切に処理します。

catch (SomeException e){
    jLabel6.setText("Error!");
}

すべての例外をキャッチすることが良い考えだとは思わないでください。

于 2012-12-19T23:17:09.623 に答える
1

原則として、System.exit()GUI 駆動のアプリケーションでは使用しないようにしてください。プログラム全体が終了するだけで、ユーザーは何が起こったのか不思議に思うでしょう。System.exit()通常、シェルに終了コードを提供する必要があるコマンド ライン アプリケーションにより適しています。これは、ほとんどのオペレーティング システムで使用可能なシステム終了呼び出しと類似しています。

これを試して:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)   {                                         
    try{
        setFName(jTextField1.getText());
        if(havedigit(getFName())) { 
            jLabel6.setText("First name error!");
            return;
        }
        setLName(jTextField2.getText());
        if(havedigit(lastName)) {
            jLabel6.setText("Last name error!");
            return;
        }
        WriteToFile(getFName());
        WriteToFile(getLName());
        setDate(Integer.parseInt(jTextField3.getText()));
        WriteToFile(String.valueOf(getDate()));
        Random rnd1=new Random();
        Registration_Number=rnd1.nextInt(100);
        setRegNum(Registration_Number);
        WriteToFile(String.valueOf(getRegNum()));
        jLabel6.setText(String.valueOf(getRegNum()));
    }
    catch(Exception e){
        jLabel6.setText("Error!");
    }
} 
于 2012-12-19T23:13:08.440 に答える
1

これを行う方法の 1 つを次に示します。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)   {                                         

    try{
        setFName(jTextField1.getText());
        setLName(jTextField2.getText());
        boolean firstNameHasDigit = havedigit(getFName());
        boolean lastNameHasDigit = havedigit(getLName());
        if (firstNameHasDigit || lastNameHasDigit) {
            jLabel6.setText("Names cannot contain digits");
        }
        else {
            WriteToFile(getFName());
            WriteToFile(getLName());
            setDate(Integer.parseInt(jTextField3.getText()));
            WriteToFile(String.valueOf(getDate()));
            Random rnd1=new Random();
            Registration_Number=rnd1.nextInt(100);
            setRegNum(Registration_Number);
            WriteToFile(String.valueOf(getRegNum()));
            jLabel6.setText(String.valueOf(getRegNum()));
        }
    }
    catch(Exception e){
        jLabel6.setText("Error!");
    }
}                                        

public boolean havedigit(String in){
    for(int i=0;i<in.length();i++){
        if(Character.isDigit(in.charAt(i)))  return true;
    }
    return false;
}
于 2012-12-19T23:13:24.520 に答える
0
    if(havedigit(getFName())==true) { 
        System.exit(1);
    }
    setLName(jTextField2.getText());
    if(havedigit(lastName)==true) {
        System.exit(1);
    }

する必要があります

    if(havedigit(getFName())) { 
        JOptionPane.showMessageDialog(.....);
        return; //get out of method, no need to continue
    }
    setLName(jTextField2.getText());
    if(havedigit(lastName)) {
        JOptionPane.showMessageDialog(.....);
        return; //get out of method, no need to continue
    }

JOptionPane.showMessageDialog の使い方については、Google で検索してください。

于 2012-12-19T23:28:02.593 に答える