Несколько классов в Dr. Java

Компилятор JDK говорит, что он компилируется, но когда он запускается, я получаю эту ошибку:

Статическая ошибка: у этого класса нет статического основного метода void, принимающего String[].

Я привык помещать мой класс методов в один файл и помещать основной класс в отдельный файл.

Как мне решить эту проблему?

    import java.util.Scanner;

public class Test{
  private final int classSize = 35;
  private int numEnrolled, numNeeded; 

  public void Input(){
   Scanner in = new Scanner(System.in);
   System.out.println("Enter the amount enrolled in your class");
   numEnrolled = in.nextInt();
   System.out.println("Your input is " + numEnrolled);       

   // Other parts of code that needs to be coded 
  }
}

class testRunner{
  static void main(String args[]){
    Test newTest = new Test();
    newTest.Input();

 }}

2 ответа

Решение
  • В одном файле вы можете иметь только один открытый класс и несколько закрытых классов
  • Ваше имя файла должно совпадать с единственным открытым классом
  • Чтобы сделать ваш класс работоспособным, он должен содержать открытый метод static void main(String args[]), предпочтительно в открытом классе

Ваш TestRunner.java должен выглядеть следующим образом

class Test{
    private final int classSize = 35;
    private int numEnrolled, numNeeded;

    public void Input(){
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the amount enrolled in your class");
        numEnrolled = in.nextInt();
        System.out.println("Your input is " + numEnrolled);

        // Other parts of code that needs to be coded
    }
}

public class TestRunner{
    public static void main(String args[]){
        Test newTest = new Test();
        newTest.Input();

    }}

Изменить: Если вы хотите оставить имя файла Test.java, это тоже работает:

public class Test {
    private final int classSize = 35;
    private int numEnrolled, numNeeded;

    public void Input() {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the amount enrolled in your class");
        numEnrolled = in.nextInt();
        System.out.println("Your input is " + numEnrolled);

        // Other parts of code that needs to be coded
    }
}

class TestRunner {
    public static void main(String args[]) {
        Test newTest = new Test();
        newTest.Input();

    }
}

Изменить:

class testRunner{
  static void main(String args[]){
    Test newTest = new Test();
    newTest.Input();

 }}

чтобы:

public class testRunner {
  public static void main(String args[]) {
    Test newTest = new Test();
    newTest.Input();
}}

main() всегда должен быть объявлен публичным

Другие вопросы по тегам