我很困惑我正在尝试更多地了解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
我希望你能够谦虚地看看我的计划,我会全心全意地使用它
答案 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{
...
}