【问题标题】:Java Error: unresolved compilationJava 错误:未解决的编译
【发布时间】:2016-04-21 02:54:16
【问题描述】:

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

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);
            }

        }
    }
}

【问题讨论】:

  • 函数中不能有类。把它放在你的函数之外。
  • 我刚刚将您的代码复制到了一个名为homework6.java 的文件中——使用了精确的大小写——它编译得很好。它运行也没有错误,尽管它没有任何事情,因为你的 main() 方法唯一要做的就是声明一个类(不实例化它,更不用说调用它的任何方法)。

标签: java compiler-errors


【解决方案1】:

您将一个类Date 嵌套在一个方法中,准确地说是主要方法——这是您不能也不应该做的事情。

解决方案:不要这样做。

创建一个名为 Date.java 的文件并将您的 Date 类代码放入其中。
创建一个名为 Homework6.java 的第二个文件并将您的 main 方法放入其中。

完成。

【讨论】:

  • 这是错误的——你可以在一个方法中嵌套一个类。我刚才仔细检查并在 1.8 上验证了这一点,尽管我几乎可以肯定这在 1.7 中也是如此,而且谁知道更早。
【解决方案2】:

答案中的有效点。您也可以将类放在 main 之外并对其进行编译。

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

【讨论】:

  • 您如何建议我将课程放在主课程之外?我是否包括从上课日期到“name="January?”
【解决方案3】:

可能是因为这个:

public Date() {

}

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

应该删除前两个括号,因为后两个之间的代码不在方法中。所以应该是这样的:

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

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多