和java中的main错误

时间:2013-11-26 17:19:28

标签: java eclipse

我很困惑我正在尝试更多地了解java.lang.System,我正面临着我认为是一个愚蠢的错误,但实际上无法声明它。 我的计划是:

package TheProggrammerOfTheFuture;

import java.lang.System;

public class d {

public class Main {  
    public static void main(String[] args) {  
        Time time1=new Time();  
        System.out.println("For first         object:"+time1.getHour()+':'+time1.getMinute()+':'+time1.getSecond());  
}  

}

public class Time {  
    private int hour;  
    private int minute;  
    private int second;  
    ////////////////////  
    public Time()  
    {  
        long totalMilliSeconds=System.currentTimeMillis();  
        long totalSeconds=totalMilliSeconds/1000;  
        this.second=(int)(totalSeconds%60);  
        long totalMinutes=totalSeconds/60;  
        this.minute=(int)(totalMinutes%60);  
        long totalHours=totalMinutes/60;  
        this.hour=(int)(totalHours%24);  
    }  
    public int getHour(){  
        return hour;  
    }  
    public int getMinute(){  
        return minute;  
    }  
    public int getSecond(){  
        return second;  
    }  
    public void display()  
    {  
        System.out.println("Time:"+hour+":"+minute+":"+second);  
    }  


}  

}

该错误在main中,并且显示为'

The method main cannot be declared static; static methods can only be declared in a static or top level type

我希望你能够谦虚地看看我的计划,我会全心全意地使用它

4 个答案:

答案 0 :(得分:2)

您将Main类作为内部类。将其移动到单独的类/ .java源文件。

错误消息实际上告诉您需要知道的所有内容。主要方法需要是顶级类型。也就是说,不是在内部类中,也不是在同一源文件中的第二个类。

Java可以在同一个源文件中输入许多单独的类,但是,只有一个可以是公共的,并且需要与文件本身共享相同的名称。主要方法必须采用这种“顶级”类型。

答案 1 :(得分:2)

您可以删除public class d,然后将文件重命名为Main.java。您还需要将Time声明为class Time

编辑: 默认情况下,Java会尝试在名称与文件名相同的类中运行public static void main(String[])方法。因此,通过删除类d(为什么它甚至在那里?),并重命名为Main.java,它将成功运行您的main方法。您需要更改Time,因为外部公共类必须位于由其自己的名称指定的文件中,因此您无法将其公开。

答案 2 :(得分:2)

改为编写:在我的电脑上编译

import java.lang.System;

public class Main {
    public static void main(String[] args) {
    Time time1 = new Time();
    System.out.println("For first object:" + time1.getHour() + ':'
            + time1.getMinute() + ':' + time1.getSecond());
    }
}

class Time {
    private int hour; 
    private int minute;
    private int second;

    // //////////////////
    public Time() {
        long totalMilliSeconds = System.currentTimeMillis();
        long totalSeconds = totalMilliSeconds / 1000;
        this.second = (int) (totalSeconds % 60);
        long totalMinutes = totalSeconds / 60;
        this.minute = (int) (totalMinutes % 60);
        long totalHours = totalMinutes / 60;
        this.hour = (int) (totalHours % 24);
    }

    public int getHour() {
        return hour;
    }

    public int getMinute() {
        return minute;
    }

    public int getSecond() {
        return second;
    }

    public void display() {
        System.out.println("Time:" + hour + ":" + minute + ":" + second);
    }

}

答案 3 :(得分:1)

取出d班。我觉得没必要。它使你Main类成为一个内部类。该文件应为名称Main.java

如果您希望这样,那么您需要main类中的d方法。

public class Main {  
    public static void main(String[] args) {  
        Time time1=new Time();  
        System.out.println("For first object:"+time1.getHour()+':'+time1.getMinute()+':'+time1.getSecond());  
}  

此外,如果您的Time课程与Main位于同一档案中,Time不能public

Main.java

public class Main {  
    public static void main(String[] args) {  
        ...
    }
}

class Time {
    ...
}

-OR -

Main.java

public class Main {  
    public static void main(String[] args) {  
        ....
    }
}

Time.java

public class Time{
    ...
}