Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe eine Hashmap konstruiert und würde sie jetzt gerne in einer anderen Klasse verwenden. Allerdings kennt die andere Klasse die Hashmap "fächer" nicht.
So habe ich sie konstruiert:
Java:
public class NotenRechner {
public static HashMap<String, Fach> fächer = new HashMap<String, Fach>();
........
Und hier würde ich sie gerne verwenden:
Java:
public class Fach {
public Fach(String name, float zeugnisNote) {
this.name = name;
this.zeugnisNote = zeugnisNote;
fächer.put(...);
Kann mir vllt jemand weiterhelfen? Ist bestimmt ein dämlicher Anfängerfehler :/
Da die map static ist , und in der Klasse NotenRechner deklariert wird.
Hat es einen besonderen grund warum die map statisch sein muss ?
Du könntest auch einfach eine Map mit Fächern machen und diese dann einfach bei bedarf an einen Notenrechner übergeben
Java:
public class Fach{
static HashMap<String, Fach> fachMap = new HashMap<>();
private String name;
private int note;
public Fach(String name , int note){
this.name = name;
this.note = note;
fachMap.put(name, this);
}
}
so wird jedes fach bei instanzierung direkt mit namen des Faches in der map abgelegt
Hier mal ein Beispiel anhand einer Inneren statischen klasse, ich rechne hier auch die noten einfach nur zusammen und teile durch die Anzahl der Fächer
Java:
import java.util.HashMap;
import java.util.Map.Entry;
public class Fach{
static HashMap<String, Fach> fachMap = new HashMap<>();
private String name;
private int note;
public Fach(String name , int note){
this.name = name;
this.note = note;
fachMap.put(name, this);
}
public int getNote() {return note;}
public String getName() {return name;}
//static inner class
static class NotenRechner{
public NotenRechner(){}
public static double calculate(HashMap<String, Fach> map) {
double result = 0;
for (Entry<String, Fach> e : map.entrySet()) {
result += e.getValue().getNote();
}
return result / map.size();
}
}
public static void main(String[] args){
new Fach("Mathe", 2);
new Fach("Physik", 1);
new Fach("Deutsch", 4);
new Fach("Kunst", 3);
//Durchschnitt aller Fächer errechnen
System.out.println(NotenRechner.calculate(Fach.fachMap));
//Note für mathe ausgeben lassen
System.out.println(Fach.fachMap.get("Mathe").getNote());
}
}