2014-01-29 47 views
-2
CollegeTester.java:10: error: non-static method getCommand() cannot be referenced from a static context 
     getCommand();//goes to command 
    ^

如何输入此方法。使其public static void不仅会导致更多的问题如何从静态方法输入非静态方法

所以你不能在 main()称这个为 main()
import java.util.Scanner; 

public class CollegeTester 
{ 
    public String name; 
    Scanner input = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
     getCommand();//goes to command 
    } 

    //Ask user for a command 
    public void getCommand() 
    { 
     // do stuff 
    } 
} 
+3

你真的应该问这个任何更多的问题之前(静态和实例方法之间的区别就在这里特别)了解更多一点关于OOP现场。 – Njol

+0

除了恩乔尔的建议之外,我还应该将CollegeTester课程与主课程分开。 – KarelG

+0

[非静态方法(方法名称()))的重复可能不能从静态上下文中引用。为什么?](http://stackoverflow.com/questions/11282093/non-static-method-method-name-cannot-be-referenced-from-a-static-context-wh) – 2014-01-29 08:48:32

回答

2

你可以称它为如主要:

CollegeTester c = new CollegeTester(); 
c.getCommand(); 
+0

我要把CollegeTester c = new CollegeTester()在主要还是课堂上? – Shimy

+0

的主要方法 –

0

getCommand()也不是一成不变的是static.You必须创建一个对象,然后调用getCommand()

或者使getCommand()静态

这是通过创建对象并调用getCommand的方式()

import java.util.Scanner; 

    public class CollegeTester 
    { 
    public String name; 
    Scanner input = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
CollegeTester c=new CollegeTester(); 
     c.getCommand();//goes to command 
    } 

    //Ask user for a command 
    public void getCommand() 
    { 
     do stuff 
    } 

这是做的方式getCommand()静态

import java.util.Scanner; 

public class CollegeTester 
{ 
public String name; 
Scanner input = new Scanner(System.in); 

public static void main(String[] args) 
{ 
    getCommand();//goes to command 
} 

//Ask user for a command 
public static void getCommand() 
{ 
    do stuff 
} 
0

非静态方法实例方法,因此在类的实例访问:

new CollegeTest().getCommand(); 
0

创建main方法的CollegeTester类的一个实例,并调用该方法。

new CollegeTester().getCommand(); 
0

您需要创建CollegeTester的一个实例:

main(...) 
    { 
     CollegeTester t = new CollegeTester(); 
     t.getCommand(); 
    }