0

**すばらしい人たち、比較とIFステートメントを修正してこれを機能させましたが、現在、コンソールでファイルの情報を出力する作業を行っています。エラーコードはもうありませんが、コンソールには java.io.PrintWriter ..... outputFile の使用方法と javax.swing.JOptionPane のインポート方法に関するポインタが表示されますか? 以下のコードを修正

import java.io.File;
import java.util.Scanner;
import java.io.PrintWriter;
import javax.swing.JOptionPane;

public class StudentFile {
     public static void main(String[] args) throws Exception {
        // Declare and initialize variables
        String studentSummary = "Student Summary Report";
        String eligibleBachelorsReport = "Eligible Bachelors Report";

        // input record
        String firstName;
        String lastName;
        String gender;
        int age;
        String maritalStatus;

        // counters
        int marriedMen = 0;
        int singleMen = 0;
        int marriedWomen = 0;
        int singleWomen = 0;

        // create studentInput to read from StudentFile.txt
        File inputFile = new File("StudentFile.txt");
        Scanner input = new Scanner(inputFile);

        while (input.hasNext()) {
            // read name, gender, age, maritalStatus
            firstName = input.next();
            lastName = input.next();
            gender = input.next();
            age = input.nextInt();
            maritalStatus = input.next();


            if (gender.equals("F"))
            {
                if(maritalStatus.equals("M"))
                {
                marriedWomen = marriedWomen ++;
                }

                else {
                   singleWomen = singleWomen ++;
                 }
            }
            else if (maritalStatus.equals("M")){
                marriedMen = marriedMen++;
            }else{
                singleMen = singleMen++;
            }

                if( age > 30) {
                    eligibleBachelorsReport += " "+firstName + " "+lastName;
     }
            System.out.println(firstName + " " + lastName + " " + gender + " " + age + " "
                    + maritalStatus);
        }

        // write studentSummary, eligibleBachelorsReport to StudentReport.txt
        PrintWriter outputFile = new PrintWriter("StudentReport.txt");
        outputFile.println(studentSummary);
        outputFile.println(eligibleBachelorsReport);

        // write studentSummary, eligibleBachelorsReport to the console
        System.out.println(studentSummary);
        System.out.println(eligibleBachelorsReport);
        JOptionPane.showMessageDialog(null, outputFile);

        input.close();
        outputFile.close();
     }}

このコードを機能させようとしていますが、何が間違っているのかわかりません。このプログラムにインポート/添付したこのテキスト ファイルの文字列データを比較しようとしていますが、うまくいかないようです。

私が持っているコードは以下で、インポートしたtxtファイルにはStudentFile.txtというラベルが付けられており、次の順序で3行の情報があります:名前、性別、年齢、婚姻状況例:Mick Jagger M 22 S

何が間違っているのですか? なぜ構文エラーが発生し続けるのですか? 私は簡単な日食を使用しています。通常、デバッガーを使用してこれで間違ったことを見つけることができますが、ちょっと行き詰まっています。助けてください!どうも

import java.io.File;
import java.util.Scanner;
import java.io.PrintWriter;
import javax.swing.JOptionPane;

public class StudentFile {
    public static void main(String[] args) throws Exception {
        // Declare and initialize variables
        String studentSummary = "Student Summary Report";
        String eligibleBachelorsReport = "Eligible Bachelors Report";

        // input record
        String firstName;
        String lastName;
        String gender;
        int age;
        String maritalStatus;

        // counters
        int marriedMen = 0;
        int singleMen = 0;
        int marriedWomen = 0;
        int singleWomen = 0;

        // create studentInput to read from StudentFile.txt
        File inputFile = new File("StudentFile.txt");
        Scanner input = new Scanner(inputFile);

        while (input.hasNext()) {
            // read name, gender, age, maritalStatus
            firstName = input.next();
            lastName = input.next();
            gender = input.next();
            age = input.nextInt();
            maritalStatus = input.next();


            if (gender.equals(F)){
            }if maritalStatus.equals(M)){
                marriedWomen = marriedWomen ++;
                } else {
                singleWomen = singleWomen ++;
            }else{
                }if maritalStatus.equals(M)){
                marriedMen = marriedMen ++
            }else{
                singleMen = singleMen ++
                if age > 30 {
                    eligibleBachelorsReport += ""firstName + ""lastName
    }
            System.out.println(firstName + " " + lastName + " " + gender + " " + age + " "
                    + maritalStatus);
        }

        // write studentSummary, eligibleBachelorsReport to StudentReport.txt
        PrintWriter outputFile = new PrintWriter("StudentReport.txt");
        outputFile.println(studentSummary);
        outputFile.println(eligibleBachelorsReport);

        // write studentSummary, eligibleBachelorsReport to the console
        System.out.println(studentSummary);
        System.out.println(eligibleBachelorsReport);

        input.close();
        outputFile.close();
    }}
4

4 に答える 4

3

性別の文字列比較を確認します。

gender.equals(F)){
        }if maritalStatus.equals(M)){

ここでは裸のトークンを使用しており、文字列、および と比較していません"M""F"

また、そのコードを見てください。構文エラーがあり、ステートメントの多くにif、空のブロック ifがあり、中間を使用する代わりに、gender.equals("F")複数のステートメントをつなぎ合わせています。elseelse if

これは正しくありません:

if (test)
{

}
else
{ ; }
else // wrong, can only have one final else
{ ; }

3 つのブランチの場合、介在が必要ですif

if (test)
{

}
else if (someOtherTest)
{

}
else // ok, one final else
{ ; }
于 2012-10-06T19:02:06.687 に答える
0

コードにはいくつかの問題があります。私はこれまでに見たものの簡単な履歴書を作成しようとします(各ケースの1つの例を示し、関連する問題の残りは同様です)。さらに見つかった場合は回答を更新します。

gender.equals(F)

Fとは何ですか?、それは定義された変数でも有効な値でもありません。文字列と比較する場合は、のような引用符を使用する必要があります"F"

if age > 30

ほとんどのステートメントでは()、何をチェックするかを区切るために'sが必要です。ステートメントはそのif1つであり、のようにする必要がありますif(age > 30)。また、ifが複数行のコードを囲む場合は、角かっこを使用する必要があることに注意してください。

eligibleBachelorsReport += ""firstName + ""lastName

String変数を連結するために変数の前に引用符を使用する必要はありません。それでも、文字列の間に空白を追加したい場合は、実行してくださいeligibleBachelorsReport += " " + firstName + " " + lastName + " - "。最後の-は単なる提案です。多くのものを連結する場合は、覚えておいてください。また、\n改行を挿入する必要がある場合にも使用できます。

eligibleBachelorsReport += ""firstName + ""lastName
marriedMen = marriedMen ++

とりわけ、これらの行の終わりにはセミコロンはありません。

singleMen = singleMen ++

それ自体は問題ではありませんが、不要です。singleMen++と同じか、singleMen = singleMen + 1または同じことをしてくださいsingleMen += 1

最後に、ifステートメントを確認してください。elseごとに1つしかありません。それらに関連付けられた条件がないため、if孤立を回避するものと考えてください。else構造は次のとおりです。

if(condition) {

} else {

}

または、ifおよび/またはelse1行のみを囲む場合(私は常に角かっこを使用します。これにより、ステートメントの区切りが明確になり、読みやすさが向上します。):

if(condition)
    //code
else
    //code

または、ステートメントをネストするには:

if(condition) {

} else if(condition2) {

} else if(condition3) {

}
于 2012-10-06T19:15:30.140 に答える
0
if (gender.equals(F))

Fあなたのコードには変数はありません..ここでは「F」を使用して比較する必要があります..

また、if を次のように使用しています: - if age > 30.. これは正しい方法ではありません.. かっこで囲む必要があります: -if (age > 30)

于 2012-10-06T19:03:04.760 に答える
0

といいますがif (gender.equals(F))、F とは何ですか?それはどこかで定義した変数ですか?文字列「F」を意味している可能性が高いと思います。同様にif (maritalStatus.equals(M))(ちなみに、欠落していて開き括弧があります)

于 2012-10-06T19:03:42.920 に答える