Тестовый класс с сообщением об ошибке не статической переменной - PullRequest
0 голосов
/ 16 мая 2019

Я создаю класс testMethod () ниже для тестирования методов в классе Main. Когда я выполнил программу, она выдала ошибку компилятора: на нестатическую переменную Java нельзя ссылаться из нестатического контекста. Проект предусматривает создание 2 разных классов. Первый класс должен состоять из 3 методов, третий из которых вызывает методы 1 и 2. Второй класс используется для тестирования методов в основном классе.

Я новичок в Java и пытаюсь выяснить, что вызывает эту ошибку.

Спасибо

импорт java.util.Scanner;

публичный класс Main {

 char reply;
 int input;

     public void gradeModule(int mark) {
    mark = input;
    if (mark >= 70) {
        System.out.println("Excellent");
    } else if (mark >= 60 && mark <= 69) {
        System.out.println("Good");
    } else if (mark >= 50 && mark <= 59) {
        System.out.println("Satisfactory");
    } else if (mark >= 40 && mark <= 49) {
        System.out.println("Compensatable fail");
    } else {
        System.out.println("Outright fail");
    }

}

 public int getValidModuleMark() {

    Scanner keyboard = new Scanner(System.in);

    while (input > 100 || input < 0)
    {
        System.out.println("Please enter a valid mark between 0 - 100:  ");
        input = keyboard.nextInt();
    }

    return input;

}

public void startModuleGrading() {

     System.out.println("*********** Module Grading Program *********");


     do {

         getValidModuleMark();

         gradeModule(input);


         System.out.println("Would you like to continue grading (Y/N)? ");
         Scanner keyboard = new Scanner(System.in);
         reply = keyboard.next().charAt(0);

         if (reply == 'N' || reply == 'n') {
             System.out.println("Thank you!");
         }


     } while (reply == 'Y' || reply == 'y');


}

}

class testMethod {

Main test = new Main ();

public static void main(String [] args){

    test.startmoduleGrading();

}

}

1 Ответ

1 голос
/ 16 мая 2019

ОТВЕТ НА ОРИГИНАЛЬНЫЙ ВОПРОС:

Исходя из того, что я читаю здесь, ваш учитель, вероятно, хочет один класс, подобный этому:

class X
{
    public int methodOne(int i)
    {
         return i++;
    }

    public int methodTwo(int i)
    {
         return i--;
    }

    public int methodThree(int i)
    {
         return methodOne(i) + methodTwo(i);
    }
}

Тогда вы быесть другой класс для тестирования:

class Tester
{
    public static void main(String[] args)
    {
         X test = new X();
         System.out.println(test.methodOne(3));
         System.out.println(test.methodTwo(3));
         System.out.println(test.methodThree(3));
    }
}

Это показывает, что вы создали класс и что методы работают.

ОТВЕТЬТЕ НА ОБНОВЛЕННЫЙ ВОПРОС:

В вашем коде вы объявили Main test = new Main (); вне вашего основного метода, который действительно является статическим методом.Переместите объявление внутри метода, и все должно работать.Таким образом, ваша программа должна выглядеть так:

public static void main(String [] args)
{
    Main test = new Main ();
    test.startmoduleGrading();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...