Methoden Array: ausgeben von einem Wörterbucheintrag

anonymo

Mitglied
Hi
ich bin neu hier und brauche Hilfe für das Ausgeben eines Wörterbucheintrags.
Ich hab die Lösung zwar aber ich verstehe nicht wie das funktioniert -.-
beim ausgeben der bedeutungen gibt es aber eine endlosschleife die nicht nicht verstehe :/
hier also der Quelltext:
[Java]
public class WBEintrag implements DATENELEMENT {
private String wort;
private String[] bedeutungen;

public WBEintrag(String newWort, int anzBedeutungen) {
wort = newWort;
bedeutungen = new String[anzBedeutungen];
}

public void bedeutungEinfuegen(String bedeutung) {
int einfuegeStelle = getEinfuegeStelle();
if (einfuegeStelle == -1) {
System.out.println("Kein Platz mehr f�r Bedeutungen");
} else {
bedeutungen[einfuegeStelle] = bedeutung;
}


//Alternativ
/*for (int i = 0; i < bedeutungen.length; i=i+1) {
if (bedeutungen == null) {
bedeutungen = bedeutung;
break; //bricht die Schleife ab
}
}*/
}

private int getEinfuegeStelle() {
for (int i = 0; i < bedeutungen.length; i=i+1) {
if (bedeutungen == null) {
return i;
}
}

return -1;
}

public String getKey() {
return wort;
}

public void infoAusgeben(){
//TODO for-Schleife
for (int i=0; i < bedeutungen.length; i=i++) {
System.out.println(bedeutungen);
}
}

[/code]
 
Wo siehst du denn da bitte eine Endlosschleife? Ich sehe zwar for-Schleifen, diese sind aber begrenzt durch längenangaben.

Wäre sinnvoll, du würdest etwas genauer werden, da dir niemand helfen kann, wenn du einfach nur schreibst "Verstehe ich nicht" und dabei Source postest.

Schreib doch mal genauer, welche Zeilen du nicht verstehst und versuche mal selber zu intepretieren, was die jeweiligen Zeilen überhaupt machen.
 
Hatte ich auch nicht gesehen, aber wenn ich die bedeutungen ausgeben will schreibt er mir endlos oft dieselbe bedeutung.
wie gesagt ich bin noch ganz neu hier^^

Wie ich es verstanden hab ist so:
mit getEinfuegeStelle() finde ich heraus an welcher stelle ich einfügen will richtig?
bei der methode bedeutungEinfuegen will ich den String bedeutung einfügen, der wird dann beim einfügen angegeben. Wo die einfuegestelle ist ist klar mit der int getEinfuegeStelle() aber den if-else block verstehe ich dann nicht :/
 
Du meinst dieses if-else hier?

Java:
        if (einfuegeStelle == -1) {
            System.out.println("Kein Platz mehr für Bedeutungen");
        } else {
            bedeutungen[einfuegeStelle] = bedeutung;
        }

Es wird in dem Array nach einem leeren Platz gesucht (== null). Wenn ein leerer Platz gefunden wurde, wird an die leere Stelle die Bedeutung hinterlegt. Wenn die Funktion getEinfuegeStelle() eine leere Position findet, wird der Positionsindex zurückgegeben. Sind im Array alle Plätze belegt, wird eine -1 zurückgegeben (letzte Zeile "return -1"). Der negative Index heißt hier (und auch bei vielen anderen Utils), dass kein Eintrag gefunden wurde, also kein Platz mehr frei ist. In deinem Fall wird dann der Text "Kein Platz mehr für Bedeutungen" ausgegeben.
Anpassungsvorschlag: Array in diesem Fall vergrößern 😉
 
Mir ist gerade gekommen woher die Endlosschleife rührt: natürlich nicht vom einfügen, sondern wegen der ausgabe
die Ausgabe sieht aus wie folgt:
Java:
public void infoAusgeben(){
        for (int i=0; i < bedeutungen.length; i=i++) {        
            System.out.println(bedeutungen[i]);
        }
    }

ich verstehe nicht wieso er endlos dasselbe ausgibt und wenn jemand einen Verbesserungsvorschlag hat, ist der sehr willkommen 🙂
 

Neue Themen


Zurück
Oben