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

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

Static Error: This class does not have a static void main method accepting String[].

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

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

    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();

 }}

Возможно, вы захотите добавить public

GBlodgett 12.12.2018 23:59

С точки зрения компиляции это действительно так. У вас может быть статический метод, который ничего не возвращает, называется main, который принимает String[] в качестве параметра, но это не делает его вpublic static void main(String[] args).

Makoto 13.12.2018 00:00

Я бы прочитал вопрос это

GBlodgett 13.12.2018 00:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
289
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
  • В одном файле может быть только один публичный класс и несколько закрытые классы
  • Ваше имя файла должно соответствовать единственному общедоступному класс
  • Чтобы сделать ваш класс работоспособным, он должен содержать метод общедоступная статика 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();

    }
}

Итак, мне все еще нужен второй файл для класса testRunner, чтобы использовать его в Test.java? Я думал, что Java может обрабатывать несколько классов в одном файле.

Spar Sav 13.12.2018 00:07

Я добавил некоторое объяснение, java может обрабатывать несколько классов, но только один может быть общедоступным

taygetos 13.12.2018 00:12

Я пробовал использовать вашу вторую строку кода с Test.Java, но она все еще выдает статическую ошибку: у этого класса нет статического метода void main, принимающего String [].

Spar Sav 13.12.2018 00:41

как ты пытаешься казнить?

taygetos 13.12.2018 00:44

в настоящее время он просто пытается скомпилировать его (пока без ошибок) и запустить, но когда я нажимаю кнопку запуска, это первое, что появляется. нет запроса на ввод. я не знаю, проблема ли это Dr. Java или нет

Spar Sav 13.12.2018 00:48

я не знаю, что не так, должно работать. Но тогда придерживайтесь первого кода. Второй в любом случае странный, только что опубликовал, потому что мне он показался интересным

taygetos 13.12.2018 00:58

Изменять:

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() всегда должен быть объявлен общественный

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