2012-12-08 122 views
0

出于某种原因,我得到一个语法错误,说“语法错误,插入”}“以完成ClassBody。”我检查了每个方法,每个语句以确保我有完整的开放和关闭括号,所以我不知道为什么会发生这种情况。有人可以告诉我为什么我可能会遇到这个问题吗?语法错误,请插入“}”以完成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 
+0

我复制你的代码到我的工作区,我看到没有任何形式的编译器错误:P – PermGenError

+0

它看起来不错 - 你显示所有的该文件的内容?名为'jloneman_Numerology.java'的文件是? – assylias

+0

你的代码最后是什么'78,0-1 Bot'?它是罪魁祸首吗?我怀疑是这样。无论如何,请告诉我们。 :) – Sufian

回答

3

尝试删除(或注释掉)一种方法,看看问题是否存在。如果有,请删除或注释掉其他方法等等,直到错误消失。然后恢复一切,但最后的方法。

如果错误不再出现,问题可能出现在最后一个方法中。

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

0

我也有这个错误 上面的代码没有错误(当我使用上面作为一个子类的代码)。 我被清理我的IDE的工作空间,并确保呼叫者工作正常纠正我的错误。

  • 项目设置
  • 运行设置
  • 确认在主被正确列出
  • 公共静态无效的主要(字串[] args){...}
相关问题