我正在下面创建一个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();
}
}
答案 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();
}