使用非静态变量错误消息的测试类

时间:2019-05-16 13:12:03

标签: java class methods static

我正在下面创建一个testMethod()类来测试Main类中的方法。当我执行该程序时,它给了编译器错误:无法从非静态上下文中引用Java非静态变量。该项目要求构造两个不同的类。第一类必须包含3种方法,其中第三种需要方法1和2。第二类用于测试主类中的方法。

我是Java的新手,我正在努力找出导致此错误的原因。

谢谢

导入java.util.Scanner;

公共类主要{

 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 个答案:

答案 0 :(得分:1)

回答原始问题:

根据我在这里阅读的内容,您的老师可能想要一个这样的课程:

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 (); 在main方法之外,这确实是静态方法。将声明移到方法内部,一切都会正常。因此,您的程序应如下所示:

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

}