2014-01-29 199 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(); 
    }