Java



  • Hallo ich habe gerade bei einer Java Aufgabe probleme :

    In dieser Aufgabe geht es darum, eine Klasse zum Speichern von tabellarischen Daten zu erstellen. Diese
    Daten liegen in der Form von Dezimalzahlen (double) vor. Die Zeilen der Tabelle sollen mit ganzzahligen
    Indizes, die Spalten mit Spaltennamen referenziert werden.
    a) Erstellen Sie eine abstrakte Klasse Tabelle mit den abstrakten Methoden public abstract
    double gibWert(int zeile, String spalte) und public abstract void setzeWert(int
    zeile, String spalte, double wert).
    b) Ergänzen Sie einen Konstruktor, der ein Array mit den Spaltennamen und die Anzahl der Zeilen
    übergeben bekommt und beides in geeignete Datenfelder speichert.
    c) Schreiben Sie eine Methode public void spalteAusgeben(String spalte) und eine Methode
    public void zeileAusgeben(int zeile), die die Werte der angegebenen Spalte bzw. Zeile ausgibt (durch Kommas getrennt). Nutzen Sie die Methode gibWert!
    d) Erstellen Sie nun eine Unterklasse MapTabelle, die die Werte einer Tabelle in einer HashMap
    speichert. Konkret wird immer ein ganzzahliger Index (Integer) einer Tabellenzeile zugeordnet.
    Diese Tabellenzeile wiederum ist auch eine HashMap, die dem Spaltennamen (String) einen Wert
    (Double) zuordnet.
    Hinweis: Eine HashMap, die eine Zuordnung X 7! Y darstellt, wird in Java als HashMap
    geschrieben.
    Der Konstruktor (mit denselben Parametern wie in der Oberklasse) soll, nachdem der SuperKonstruktor aufgerufen wurde, die HashMap als leere Map initialisieren.
    e) Überschreiben Sie nun die Methode public double gibWert(int zeile, String spalte). Diese soll den Wert der entsprechenden Tabellenzeile und -spalte zurückgeben, sofern dieser existiert
    (es also eine Zuordnung für die Zeilennummer und eine Zuordnung für die Spalte innerhalb der
    Tabellenzeile gibt). Ansonsten soll 0 zurückgeliefert werden.
    f) Überschreiben Sie außerdem die Methode public void setzeWert(int zeile, String spalte,
    double wert), die einen neuen Wert in der Tabelle speichert.
    Wenn die angegebene Tabellenzeile noch nicht existiert, müssen Sie sie erst erzeugen (als leere
    HashMap) und der Tabelle hinzufügen.
    Anschließend fügen Sie der angegebenen Zeile den Wert hinzu.
    g) Bonusaufgabe: setzeWert soll nur dann den Wert setzen, wenn der Spaltenname in dem Array der
    erlaubten Spaltennamen enthalten und die Zeilennummer kleiner als die festgelegte Zeilenanzahl
    ist.

    Mein code:

    public abstract class Tabelle 
    { 
    
    String[] d; 
    
    int f; 
    public abstract double gibWert(int zeile, String spalte); 
    
    public abstract void setzeWert(int zeile, String spalte, double wert); 
    
    public Tabelle( String[] z, int n ) { 
    
    d = z; 
    
    f = n; 
    
    } 
    
    public void spalteAusgeben(String spalte) { 
    
    for (int i = 0; i < f; i++){ 
    
    System.out.print(gibWert(i , spalte)+", "); 
    
    } 
    
    } 
    
    public void zeileAusgeben(int zeile){ 
    
    for( int i = 0; i < d.length; i++ ){ 
    
    System.out.print(gibWert( zeile , d[i])+", "); 
    
    } 
    
    }
    

    Kannst du mir jetzt irgendwie bei der d) helfen wie ich da genau vorgehen muss weiter?

    public class MapTabelle extends Tabelle 
    { 
    HashMap< Integer , HashMap < String , Double >>werte; 
    public MapTabelle(String[] z, int n ){ 
    
    super(z, n ); 
    werte = new HashMap< Integer , HashMap < String , Double >>(); 
    
    } 
    
    }
    

Anmelden zum Antworten