2016-04-21 101 views
-4

当我运行下面的代码我收到错误 - 异常在线程“主要” java.lang.Error的:未解决的问题,编译:Java错误:无法解析编译

at homework6.main(homework6.java:6) 

我研究为什么这可能发生,以前的答案曾经说过需要匹配java文件名的类名,我的类也和.java文件匹配。我也尝试完全删除“void”和整个语句,但后来发生了一个新的错误,说我需要public void main(String [] args)。我遇到了不同的问题,然后是类和.java?

public class homework6 { 

    public static void main(String[] args) { 

     class Date { 
      private int month; 
      private int day; 
      private int year; 
      private String name; 

      public Date() { 

      } 

      { 
       month=1; 
       day = 1; 
       year = 2001; 
       name = "January"; 
      } 

      public Date(int m, int d, int y) { 
       setDate(m, d, y); 
      } 

      public void setDate(int m, int d, int y) { 
       month = m; 
       day = d; 
       year = y; 

       if (m ==1) 
        name="January"; 
       else if(m == 2) 
        name="February"; 
       else if(m == 3) 
        name="March"; 
       else if(m == 4) 
        name="April"; 
       else if(m == 5) 
        name = "May"; 
       else if(m == 6) 
        name = "June"; 
       else if(m == 7) 
        name = "July"; 
       else if(m == 8) 
        name = "August"; 
       else if(m == 9) 
        name = "September"; 
       else if(m == 10) 
        name = "October"; 
       else if(m == 11) 
        name="November"; 
       else if(m == 12) 
        name = "December"; 
      } 

      public void showDate1() { 
       System.out.println(month + "/" + day + "/" + year); 
      } 

      public void showDate2() { 
       System.out.println(name + "" + day + "," + year); 
      } 

      public void showDate3() { 
       System.out.println(day + "" + name + "" + year); 
      } 

     } 
    } 
} 
+0

你不能在一个函数内部有一个类。相反,把它放在你的功能之外。 – Majora320

+0

我只是将你的代码复制到一个名为'homework6.java'的文件中 - 具有精确的大写字母 - 并且编译得很好。它也没有错误地运行,尽管它没有任何东西,因为你的main()方法所做的唯一事情就是声明一个类(不是实例化它,更不用说调用它的任何方法)。 – yshavit

回答

0

你嵌套类,Date,在方法中,主要的方法是精确的 - 这是你不能和不应该做。

解决方法:不要这样做。

创建一个名为Date.java的文件并将Date类代码放入其中。
创建一个名为Homework6.java的第二个文件,并在其中放置主要方法。

完成。

+0

这是错误的 - 你可以在方法中嵌套一个类。我刚刚检查了一下,并在1.8版本上进行了验证,尽管我几乎可以肯定它在1.7版本中也是如此,并且谁早早知道。 – yshavit

0

验证答案中的答案。你也可以把这个类放在main之外并让它编译。

如果你退后一步,并假设你得到这段代码进行编译,预期的输出是什么?你似乎没有打电话给任何方法。你想花一点时间理解你的逻辑吗?

+0

你会如何建议我把课程放在主体之外?我是否包含课程日期到“name =”January?“? –

0

的大概是因为这样:

public Date() { 

} 

{ 
    month=1; 
    day = 1; 
    year = 2001; 
    name = "January"; 
} 

前两个括号应该被去除,因为第二两者之间的代码不是在的方法。所以它应该是这样的:

public Date() { 
    month=1; 
    day = 1; 
    year = 2001; 
    name = "January"; 
} 
相关问题