静态方法错误

时间:2013-11-18 14:47:05

标签: java

我很困惑为什么我有一个非静态方法错误。它说“非静态方法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;
}
}

4 个答案:

答案 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();
    }

}