使用扫描程序的java类,找出总分和平均分

时间:2018-04-16 06:19:29

标签: java class java.util.scanner average totals

描述资源路径位置类型 无法对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();
        }
}

2 个答案:

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