Как войти в нестатический метод из статического

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

Как бы я ввел этот метод. Делая это public static void, вы только вызовете больше проблем

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
    }
}

person Shimy    schedule 29.01.2014    source источник
comment
Вы действительно должны узнать немного больше об ООП (здесь, в частности, разница между статическими и экземплярными методами), прежде чем задавать какие-либо вопросы на этом сайте.   -  person Njol    schedule 29.01.2014
comment
Помимо совета Ньола, я также должен отделить класс CollegeTester от основного класса.   -  person KarelG    schedule 29.01.2014


Ответы (5)


Вы можете назвать это как в main :

CollegeTester c = new CollegeTester();
c.getCommand();
person G.S    schedule 29.01.2014
comment
мне поставить CollegeTester c = new CollegeTester() в основной или класс? - person Shimy; 29.01.2014

Нестатические методы являются методами экземпляра, поэтому доступ к ним осуществляется через экземпляр класса:

new CollegeTest().getCommand();
person Peter Walser    schedule 29.01.2014

Создайте экземпляр класса CollegeTester в основном методе и вызовите этот метод.

new CollegeTester().getCommand();
person gowtham    schedule 29.01.2014

Вам нужно создать экземпляр CollegeTester:

   main(...)
   {
      CollegeTester t = new CollegeTester();
      t.getCommand();
   }
person jacquard    schedule 29.01.2014

getCommand() не является статическим, поэтому вы не можете вызвать его в main(), так как main() является статическим. Вы создали объект, а затем вызвали 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
}
person SpringLearner    schedule 29.01.2014