我很困惑为什么我有一个非静态方法错误。它说“非静态方法getGrade(double)不能从静态上下文getGrade(myGPA)引用;”我一直在阅读非静态方法。我明白我不能称之为不存在的东西。由于尚未创建对象,因此尚不存在非静态方法。静态方法(根据定义)始终存在。所以这是我下面的代码,错误说“非静态方法getGrade(double)无法从静态上下文getGrade(myGPA)引用;” 我创建了一个对象,但给了我一个“找不到符号错误”。我知道这是次要的,有人可以指导我做什么吗?谢谢你提前!
该程序应该接受用户的输入(GPA,十进制格式,并将其转换为百分位数,并响应用户。
import java.util.Scanner;
public class GradeCalc {
public double myGPA;
public double numGrade;
public static void main (String[] args) {
Scanner myScanner = new Scanner (System.in);
System.out.println("Enter your GPA.");
double myGPA= myScanner.nextDouble();
getGrade(myGPA);
System.out.println(myGPA);
}
public double getGrade(double myGPA) {
if(myGPA==0.0 || myGPA==0.8 || myGPA==0.9 || myGPA==1.0 || myGPA==1.1 ||
||myGPA==1.8 || myGPA==1.9 || myGPA==2.0 || myGPA==2.1 || myGPA==2.2 || myGPA==2.3 || myGPA==2.4 || myGPA==2.5 || myGPA==2.6 || myGPA==2.7 || myGPA==2.8 || myGPA==2.9 || myGPA==3.0 || myGPA==3.1 || myGPA==3.2 || myGPA==3.3 || myGPA==3.4 || myGPA==3.5 || myGPA==3.6 || myGPA==3.7 || myGPA==3.8 || myGPA==3.9 || myGPA==4.0 ) {
double numGrade = (myGPA*10+55);
}
if (myGPA == numGrade)
System.out.println(numGrade);
else {
System.out.println("Try again.");
}
return numGrade;
}
}
答案 0 :(得分:2)
无法从静态上下文调用非静态方法。
您可以创建GradeCalc类的实例,并使用此实例调用非静态方法。
像,
GradeCalc gradeCalc = new GradeCalc();
gradeCalc.getGrade(myGPA);
答案 1 :(得分:1)
您正尝试从静态方法(main
)调用非静态方法,这是不可能的,因为您的GradeCalc
对象未定义;您可以将getGrade
声明为静态方法(但不能使用属性),或在GradeCalc
内创建main
对象并使用它调用方法。
最好通过创建保留给main
的类来分隔GradeCalc
方法和main
类;)
答案 2 :(得分:0)
更改
public double getGrade(double myGPA)
要
public static double getGrade(double myGPA)
答案 3 :(得分:0)
尝试
import java.util.Scanner;
public class GradeCalc {
public double myGPA;
public double numGrade;
Scanner myScanner;
private void readGPA() {
myScanner = new Scanner(System.in);
System.out.println("Enter your GPA.");
myGPA = myScanner.nextDouble();
myScanner.close();
}
public void computeGrade() {
if (myGPA == 0.0 || myGPA == 0.8 || myGPA == 0.9 || myGPA == 1.0
|| myGPA == 1.1 || myGPA == 1.8 || myGPA == 1.9 || myGPA == 2.0
|| myGPA == 2.1 || myGPA == 2.2 || myGPA == 2.3 || myGPA == 2.4
|| myGPA == 2.5 || myGPA == 2.6 || myGPA == 2.7 || myGPA == 2.8
|| myGPA == 2.9 || myGPA == 3.0 || myGPA == 3.1 || myGPA == 3.2
|| myGPA == 3.3 || myGPA == 3.4 || myGPA == 3.5 || myGPA == 3.6
|| myGPA == 3.7 || myGPA == 3.8 || myGPA == 3.9 || myGPA == 4.0) {
numGrade = (myGPA * 10 + 55);
}
}
public void showResult() {
if (myGPA == numGrade) {
System.out.println(numGrade);
} else {
System.out.println("Try again.");
}
}
public static void main(String[] args) {
GradeCalc gradeCalc = new GradeCalc();
gradeCalc.readGPA();
gradeCalc.computeGrade();
gradeCalc.showResult();
}
}