KiCo4u.de - Hausaufgabenforum (http://www.kico4u.de/forum/index.php)
- Mathematik-Hilfe (http://www.kico4u.de/forum/board.php?boardid=23)
-- Mathematik Oberstufe (http://www.kico4u.de/forum/board.php?boardid=118)
--- Java (http://www.kico4u.de/forum/thread.php?threadid=11851)


Geschrieben von Tube21 am 14.05.2013 um 10:06:

  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<X, Y>
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 >>();






}


}



Geschrieben von Lord Nobs am 15.05.2013 um 16:10:

  RE: Java

Hallohi

Über abstrakte Klassen und Methoden habe ich bisher nur gelesen. Praktisch habe ich sie noch nie angewendet. Das Gleiche gilt für HashMap.

In diese Themen müsste ich mich erst einarbeiten. Dazu fehlt mir jetzt die Zeit.

Tut mir leid
Lord Nobs


Forensoftware: Burning Board 2.3.6 pl2, entwickelt von WoltLab GmbH