-1

出于某种原因,我收到一个语法错误,上面写着“语法错误,插入“}”以完成 ClassBody。” 我检查了每一种方法,每条语句,以确保我有完整的左括号和右括号,所以我不知道为什么会这样。谁能告诉我为什么我可能会遇到这个问题?

将代码复制到另一个文件中并不能解决问题,也不能转到 Project > Clean。

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

尝试删除(或注释掉)一种方法,看看问题是否仍然存在。如果是,请删除或注释掉其他方法,依此类推,直到错误消失。然后恢复除最后一种方法之外的所有内容。

如果错误没有再次出现,则问题可能出在最后一种方法中。

如果它再次出现,问题就更微妙了;也许是嵌入在代码中的控制字符。尝试将代码复制并粘贴到纯文本编辑器中(这样任何控制字符都将被忽略,保存并重新编译。

于 2012-12-08T04:15:00.640 回答
0

我也有这个错误。上面的代码中没有错误(当我将上面的代码用作子类时)。我通过清理 IDE 的工作区并确保调用者正常工作来纠正我的错误。

  • 项目设置
  • 运行设置
  • 确保正确列出 main
  • 公共静态 void main(String[] args) { ... }
于 2017-04-05T18:03:15.527 回答
-1

我遇到了类似的问题,通过删除类文件来解决它,然后再次重新创建文件并粘贴相同的代码。有效。

于 2021-05-19T06:34:21.313 回答
-1

把 拿出来System.out.println放到主函数里面,而不是introduction()放在里面main(String[] args)

于 2022-01-04T23:48:36.173 回答