-1

何らかの理由で、「構文エラーです。「}」を挿入して ClassBody を完成させてください」という構文エラーが発生します。すべてのメソッド、すべてのステートメントをチェックして、開き括弧と閉じ括弧が完全であることを確認したので、なぜこれが起こっているのかわかりません。この問題が発生する理由を誰か教えてもらえますか?

コードを別のファイルにコピーしても問題は解決せず、[プロジェクト] > [クリーン] に移動しても問題は解決しません。

import java.util.Scanner;

public class jloneman_Numerology
{
    private String[] report;
    private int day, month, year, num;

    public jloneman_Numerology()
    {
        introduction();
        report = new String[9];
        num = 0;
    }

    public void introduction()
    {
        System.out.println("Welcome to ACME Numerology Reports! We will " +
                "determine your special\nnumerology report based on your " +
                "birth date.\n");
    }

    public void getDate()
    {
        char slash1, slash2;

        do
        {
            System.out.print("Please enter your birth date (mm / dd / yyyy): ");
            Scanner in = new Scanner(System.in);
            String date = in.nextLine();

            month = in.nextInt();
            day = in.nextInt();
            year = in.nextInt();

            slash1 = date.charAt(3);
            slash2 = date.charAt(8);
        } while (validDate(slash1, slash2) == false);

        calcNum();
    }

    public boolean validDate(char slash1, char slash2)
    {
        boolean isValid = true;

        // Check for valid month
        if (month < 1 || month > 12) 
        {
            isValid = false;
            System.out.printf("Invalid month: %d\n", month);
        }

        // Check for valid day
        if (day < 1 || day > 31)
        {
            isValid = false;
            System.out.printf("Invalid day: %d\n", day);
        }

        // Check for months with 30 days, else 31 days = invalid
        if ((month == 4 || month == 6 || month == 9 || month == 11) && (day < 1 || day > 30))
        {
            isValid = false;
            System.out.printf("Invalid day: %d\n", day);
        }
        else if (day < 1 || day > 31)
        {
            isValid = false;
            System.out.printf("Invalid day: %d\n", day);
        }

        // Check for valid year
        if (year < 1880 || year > 2280) 
        {
            isValid = false;
            System.out.println("Please enter a valid year between 1880 and 2280.");
        }

        // Check for correct separating character
        if (slash1 != '/' || slash2 != '/')
        {
            isValid = false;
            System.out.println("Invalid separating character, please use forward slashes");
        }

        if (leapYear() == true)
        {
            if (month == 2 && day > 29)
            {
                isValid = false;
                System.out.printf("Invalid day for 2/%d: %d", year, day);
            }
        }

        return isValid;
    }

    public boolean leapYear()
    {
        boolean isLeap;

        if (year % 4 == 0 && year % 400 != 0)
            isLeap = false;
        else
            isLeap = true;

        return isLeap;
    }

    public void calcNum()
    {
        // Separate each digit of the date and add to a single number

        // Test number for debugging
        num = 5;
    }

    public void printReport()
    {
        report[0] = ":1: ";
        report[1] = ":2: ";
        report[2] = ":3: ";
        report[3] = ":4: ";
        report[4] = ":5: ";
        report[5] = ":6: ";
        report[6] = ":7: ";
        report[7] = ":8: ";
        report[8] = ":9: ";

        System.out.println(report[num]);
    }
}

                                                                                                                                                  78,0-1        Bot
4

4 に答える 4

5

1 つのメソッドを削除 (またはコメントアウト) してみて、問題が解決しないかどうかを確認してください。存在する場合は、追加のメソッドを削除またはコメントアウトするなどして、エラーが消えるまで続けます。次に、最後のメソッドを除くすべてを復元します。

エラーが再発しない場合は、最後の方法に問題がある可能性があります。

再発する場合、問題より微妙です。おそらく、コードに埋め込まれた制御文字です。コードをコピーしてテキストのみのエディターに貼り付けてみてください (制御文字は無視され、保存して再コンパイルします。

于 2012-12-08T04:15:00.640 に答える