描述资源路径位置类型 无法对Jumsu类型的非静态方法Ave()进行静态引用
描述资源路径位置类型 无法对类型Jumsu
中的非静态方法Sum()进行静态引用这两个错误成立~~~
import java.util.Scanner;
public class Jumsu {
int Kor, Eng, Math;
public int Sum() {
return Kor + Eng + Math;
}
public double Ave(){
return (Kor + Eng + Math) / 3.0;
}
public static void main(String[] args) {
Jumsu exam = new Jumsu();
Scanner scan=new Scanner(System.in);
System.out.println("input num kor:");
exam.Kor=scan.nextInt();
System.out.println("input num eng:");
exam.Eng=scan.nextInt();
System.out.println("input num math:");
exam.Math=scan.nextInt();
System.out.println("kor score: "+ exam.Kor + ", eng score: " + exam.Eng + ",math score: " + exam.Math + ", total: "+ Sum() +", average"+ Ave());
scan.close();
}
}
答案 0 :(得分:1)
在print语句中,在调用Sum()
和Ave()
方法时,需要使用类对象来调用它。请改用exam.Sum()
和exam.Ave()
。
对于任何类,您不能直接调用非静态方法或访问非静态变量。你需要一个Class对象。
编辑:或者您可以将Sum()
和Ave()
方法设为静态。
在声明方法时使用public static int Sum()
和public static double Ave()
。
答案 1 :(得分:0)
这里有两个可能的解决方案。首先,您可以将public double ave()
置于静态上下文public static double ave()
中(同样适用于public double sum
),或者您可以在实现它们时使用它们。
现在这两个方法是实例方法,这意味着它们是某个对象的属性。但是,您初始化的变量也是如此:exam.kor = sc.nextInt()
。
此行特别声明您要访问Jumsu对象中存在的变量kor
,因为ave()
和sum()
也是您可以访问它们的对象的方法致电exam.sum()
而非sum()
。