Java错误:未解析的编译

Java错误:未解析的编译,java,compiler-errors,Java,Compiler Errors,当我运行以下代码时,我收到错误- 主线程java.lang中出现异常。错误:未解决的编译问题: at homework6.main(homework6.java:6) 我研究了为什么会出现这种情况,之前的回答说类名需要匹配java文件名,我的类也匹配.java文件名。我还尝试删除void和整个语句,但是出现了一个新的错误,说我需要public void mainString[]args。我是否遇到了与类和.java不同的问题 public class homework6 { publ

当我运行以下代码时,我收到错误- 主线程java.lang中出现异常。错误:未解决的编译问题:

at homework6.main(homework6.java:6)
我研究了为什么会出现这种情况,之前的回答说类名需要匹配java文件名,我的类也匹配.java文件名。我还尝试删除void和整个语句,但是出现了一个新的错误,说我需要public void mainString[]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);
            }

        }
    }
}
你将一个类Date嵌套在一个方法中,确切地说是主方法,这是你不能也不应该做的事情

解决方案:不要这样做

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


完成。

答案中的有效分数。您也可以将该类放在main之外,并让它进行编译


但是,如果您后退一步,并且假设您得到了要编译的代码,那么预期的输出是什么?您似乎没有调用任何方法。你想花点时间来理解你的逻辑吗

可能是因为:

public Date() {

}

{
    month=1;
    day = 1;
    year = 2001;
    name = "January";
}
应删除前两个括号,因为后两个括号之间的代码不在方法中。所以它应该是这样的:

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

函数中不能有类。我只是把你的代码复制到一个名为homework6.java的文件中,这个文件的大小写完全一样,编译的很好。它运行时也没有出错,尽管它没有做任何事情,因为您的主方法所做的唯一事情是声明一个类而不是实例化它,更不用说调用它上的任何方法了。这是错误的——您可以在一个方法中嵌套一个类。我刚才仔细检查了一遍,并在1.8版上验证了这一点,尽管我几乎可以肯定这在1.7版中也是正确的,之前谁知道呢。你建议我如何把这个类放在主类之外?我是否包括从上课日期到姓名=一月?