Java-класс с использованием сканера, чтобы узнать общий и средний балл

Описание Resource Path Location Type Невозможно сделать статическую ссылку на нестатический метод Ave() из типа Jumsu

Описание Путь к ресурсу Тип расположения Невозможно сделать статическую ссылку на нестатический метод Sum() из типа Jumsu

эти две ошибки основаны ~~~

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 ответа

В заявлении печати при вызове Sum() а также Ave() метод, вам нужно использовать объект класса для его вызова. использование exam.Sum() а также exam.Ave() вместо.

Для любого класса вы не можете вызывать нестатический метод или обращаться к нестатическим переменным напрямую. Вам нужен объект класса.

РЕДАКТИРОВАТЬ: Или вы можете сделать Sum() а также Ave() методы статические. использование public static int Sum() а также public static double Ave() при объявлении методов.

Здесь есть два возможных решения вашей маленькой проблемы. Сначала вы могли бы поставить public double ave() в статическом контексте public static double ave() (то же самое касается public double sum) или вы можете использовать их, как вы их реализовали.

На данный момент эти два метода являются методами экземпляра, что означает, что они являются свойством определенного объекта. Но как и ваши переменные, которые вы инициализируете так: exam.kor = sc.nextInt(),

Эта строка в частности заявляет, что вы хотите получить доступ к переменной kor который присутствует в вашем объекте Jumsu и с ave() а также sum() также методы объекта вы можете получить к ним доступ, вызвав exam.sum() вместо просто sum(),

Другие вопросы по тегам