所以我在大学里学习Java的基础课程。我正在尝试创建一个包含Bachelorstudent类的arraylist的Bachelorstudents类(英语中分别为复数和单数的“bachelorstudents”),其中包含HashMap(键)和标记(值)。
我的问题是臭名昭着的“非静态方法无法从静态上下文中引用”。
“Bachelorstudent” 级:
public class Bachelorstudent{
private String navn;
private int studentNummer;
private HashMap<String, Integer> karakterListe = new HashMap<>();
public Bachelorstudent(String navn, Integer studentNummer){
setNavn(navn);
setStudentNummer(studentNummer);
}
public Bachelorstudent(){
}
public void setKarakter(String fagkode, Integer karakter){
karakterListe.put(fagkode, karakter);
}
public HashMap<String, Integer> getKarakter(){
return karakterListe;
}
public int snitt(){
Integer snittKarakter = 0;
int counter = 0;
if(!karakterListe.isEmpty()){
for(Integer karakter : karakterListe.values()){
snittKarakter += karakter;
counter++;
}
}else{
return 6;
}
return snittKarakter /= counter;
}
public int getKarakterer(){
Integer karakterer = 0;
if(!karakterListe.isEmpty()){
for(Integer karakter : karakterListe.values()){
karakterer += karakter;
}
}else{
return 0;
}
return karakterer;
}
public void setNavn(String navn){
this.navn=navn;
}
public String getNavn(){
return navn;
}
public void setStudentNummer(int studentNummber){
this.studentNummer=studentNummer;
}
public int getStudentNummer(){
return studentNummer;
}
}
“Bachelorstudenter” 级:
public class Bachelorstudenter{
private ArrayList<Bachelorstudent> bachelorStudenter = new ArrayList<>();
public Bachelorstudenter(){
}
public void karakterSnitt(){
for(Bachelorstudent bachelorstudenter : bachelorStudenter){
Bachelorstudent student = new Bachelorstudent();
for(Bachelorstudent bachelorstudent : Bachelorstudent.getKarakter()){ //<-- Non-static method error.
}
}
}
public Boolean eksisterer(Bachelorstudent student){
boolean finnes = false;
for(Bachelorstudent bachelorstudent : bachelorStudenter){
if(bachelorstudent.getNavn().equals(student.getNavn())){
finnes = true;
}
}
return finnes;
}
public Boolean nyBachelorstudent(Bachelorstudent student){
if(!eksisterer(student)){
bachelorStudenter.add(student);
return true;
}
else{
System.out.println("Eksisterer i systemet fra før");
return false;
}
}
}
我已经尝试过几个方面,例如调用类Bachelorstudent的实例(如上所示),尝试继承(不确定我是否做得对,但我做的不起作用)。如何调用Bachelorstudenter类中的.getKarakter()方法?
编辑:只是为了澄清。这种方法的要点是获得每个bachelorstudent的每个标记的平均值。我在Bachelorstudent中有一个方法可以做到这一点,但是我需要Bachelorstudenter中的等效方法,它可以找到每个学生每门课程的平均分数。
答案 0 :(得分:0)
您需要使用对象来调用非静态方法。
在您的示例中,您需要使用当前迭代的对象来调用方法:
Object