class useTent
{
Scanner keyboard=new Scanner (System.in);
public void main (String[] args)
{
Tent t= new Tent();
HireContract hc = new HireContract();
ProcessHire(t, hc);
}
}
这是我的代码,我不断收到同样的错误:
"主要方法在class useTent中不是静态的,请将main方法定义为: public static void main(String [] args)"
当我将其设为静态时,我收到以下错误:
" C:\ Users \ Emma \ Documents \ opps ass1 \ useTent.java:22:error:non-static method ProcessHire(Tent,HireContract)无法从静态上下文ProcessHire(t,hc)引用;"
还是
"错误:在useTent类中,main方法不是静态的,请将main方法定义为: public static void main(String [] args)"
答案 0 :(得分:1)
main
的签名需要static
,就像错误告诉你一样
public static void main (String[] args) {
你没有发布ProcessHire
,但我认为你想要new
并且可能要保存参考
ProcessHire ph = new ProcessHire(t, hc);
答案 1 :(得分:1)
Java默认查找方法
public static void main (String[] args) { }
或者说
public static void main (String ...args) {}
args可以是任何名字 public static void main(String ... arguments){}
如果您已经有一个public static void main方法,那么您可以使用另一个主方法作为普通方法。
现在当你使方法静态时你会得到另一个错误,因为在静态上下文中,调用非静态方法(本地到类)而不初始化它的对象会给出错误,因为java不允许来自静态上下文/方法的非静态调用。
non-static method error
一个示例解决方案是使ProcessHire方法静态: -
class UseTent
{
Scanner keyboard=new Scanner (System.in);
public void main (String[] args)
{
Tent t= new Tent();
HireContract hc = new HireContract();
ProcessHire(t, hc);
}
public static void processProcessHire(Tent tent,HireContract hireContract){
//your method definition
}
}
或者如果您无法使该方法成为静态,请使用以下方法: -
class UseTent
{
Scanner keyboard=new Scanner (System.in);
public void main (String[] args)
{
Tent t= new Tent();
HireContract hc = new HireContract();
new UseTent().ProcessHire(t, hc);
}
public void processProcessHire(Tent tent,HireContract hireContract){
//your method definition
}
}
答案 2 :(得分:0)
主要课程应为public static void main (String[] args)
答案 3 :(得分:0)
如果ProcessHire方法是静态的并且在ABC类中试试这个,
class useTent{
Scanner keyboard=new Scanner (System.in);
public static void main (String[] args){
Tent t= new Tent();
HireContract hc = new HireContract();
ABC.ProcessHire(t, hc);
}
}
也遵循Java命名约定。