public class MainClass {
public void main(String[] args) {
Grid.simulator(args); //static method that I can actually call
Engine.main;//what I want to call
}
}
问题是:Engine.main
不能是静态的。这就是原因:
class Engine {
String command;
public void main() {
this.CommandLine(command); //Calls the Method which has the user input
this.ProcessCommand(command); //Calls the Method that will process the input
}
}
我知道我不能称之为非静态方法,但我正在考虑解决方法:
如果我将某些内容分配给CommandLine
和ProcessCommand
,就好像它是静态上下文中的非初始化变量一样。像这样:
class SomeClass {
public static void main(String[] args) {
int number = null;
number = System.Nextint;
System.out.print(number);
}
}
//In this code, either don't put it as static OR initialize 'number', even if as null.
类似会为this.Something
工作吗?如果是,那怎么回事?
答案 0 :(得分:1)
你似乎以一种非常基本的方式对Java感到困惑。
main
不是静态的,它将不会被调用,当您尝试运行该程序时,您将收到一条非常明确的错误消息。Engine.main()
代替Engine.main
。null
。实际上,此处不需要将号码设置为null
。只需将其设置为System.Nextint
。顺便说一下,将用户输入作为int更加复杂。
Scanner in = new Scanner(System.in);
int number = in.nextInt();
getInput
(应该调用CommandLine
)和其他静态的方法。并且请勿使用this.method()
,请使用method()
。 我认为你不可能每次都编译这段代码。好吧,现在就看看你发现了多少错误(如果这是你的真实代码,而不仅仅是一个随便的猜测。)