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()
,