Immer diese Arrays

loca

Mitglied
Hier mal ein Ausschnitt aus meinem Code:

Java:
// hier möchte ich schauen, ob o in meinem Array (menge) enthalten sist

public boolean contains(String o) throws IllegalArgumentException {
		for (int i = 0; i < array.length; i++) {
			if (array[i] == o) {
				return true;
			}
		}

		if (o == null) {
			throw new IllegalArgumentException("o darf nicht null sein!");
		} else {
			return false;
		}

	}

//(...)


//und hier möchte ich dem Array etwas hinzufügen

public boolean add(String o) {
		if (contains(o) == false) {
			for (int i = 0; i < array.length; i++) {
				array[i] = o;

			}
			return true;
		} else
			return false;
	}

Also ich habe weiter oben das Array erstellt. Und in der add-Methode möchte ich dem Array einen Wert hinzufügen. Dafür darf 3 nicht null sein, und auch nicht schon im Array enthalten sein.

Ich geh jetzt mal davon aus, dass ich die contains-Methode richtig eingebunden habe und es nur weitergeht, wenn o nicht null ist und nicht schon im Array ist.
Ich glaube, dass in meiner add-Methode, schon enthaltene Werte einfach überschrieben werden.
Ist das so? Wie kann sagen, laufe das Array durch, bis du ein leeres Feld findest und füge o dann hinzu?
:oops:
 

r.w.

Bekanntes Mitglied
Hallo loca,

versuch es mal in Deiner Zeile 5 mit:

Java:
//...

   if ( o.equals(array[i]) ) {

//..


Außerdem überschreibst Du in Deiner add-Methode im Fall, dass o nicht gefunden wird
mit Deiner for-Schleife alle Elemente des Arrays. Ich denke, dass ist nicht so
gewollt.


VG ROlf
 
Zuletzt bearbeitet:

loca

Mitglied
Ja genau, das will ich nicht. Ich will das Array durchlaufen, und den Wert dann in die erste leere Stelle einfügen.

edit:
stimmt es so?
Java:
public boolean add(String o) {
		if (contains(o) == false) {
			for (int i = 0; i < array.length; i++) {
				if(array[i] == null)
						array[i] = o;

			}
			return true;
		} else
			return false;
	}
 
Zuletzt bearbeitet:

r.w.

Bekanntes Mitglied
Ja genau, das will ich nicht. Ich will das Array durchlaufen, und den Wert dann in die erste leere Stelle einfügen.

edit:
stimmt es so?
Java:
public boolean add(String o) {
		if (contains(o) == false) {
			for (int i = 0; i < array.length; i++) {
				if(array[i] == null)
						array[i] = o;

			}
			return true;
		} else
			return false;
	}

Fast! ;-) So wird o in alle Elemente eingefügt, die null sind.

Eher in etwa so:
[JAVA=23]
public boolean add(String o) {
if (contains(o) == false) {
for (int i = 0; i < array.length; i++) {
if(array == null) {
array = o;
return true;
}
}
return false;
} else
return false;
}[/code]

So wird false zurückgeliefert, wenn o schon enthalten ist und ebenso,
wenn das Array voll ist.

EDIT: Sorry, Copy-Paste-Fehler behoben. ;-)

VG ROlf
 
Zuletzt bearbeitet:

loca

Mitglied
Ob o enthalten ist prüfe ich doch schon in der contains-Methode, oder? Das war jedenfalls beabsichtigt.

Also das Array hat 10 Stellen. Angenommen, es enthält schon 3 Werte und ich möchte jetzt einen vierten Wert einfügen. Funktioniert es mit dieser Methode, auch, dass der Wert an der leeren 4. Stelle eingefügt wird?

Ah, ich seh, du hast an dem Code was geändert. Jetzt erscheint es mir auch logisch. Danke!
 

destiny

Mitglied
Ob o enthalten ist prüfe ich doch schon in der contains-Methode, oder? Das war jedenfalls beabsichtigt.

Also das Array hat 10 Stellen. Angenommen, es enthält schon 3 Werte und ich möchte jetzt einen vierten Wert einfügen. Funktioniert es mit dieser Methode, auch, dass der Wert an der leeren 4. Stelle eingefügt wird?

Ah, ich seh, du hast an dem Code was geändert. Jetzt erscheint es mir auch logisch. Danke!

Dein neuer code sieht legitimm aus, loca.
Wieso probierst du es nicht einmal selbst aus, indem du das array kurz ausgibst?
Java:
println(array[i]);

in der innnersten if schleife die du da hast :)


P.S. die Bennenung/Logik deiner "contains" methode ist etwas irreführend.... if contanis == false ? Wenn man es liest, klingt es so, als ob es NICHTS enthält, wobei es bedeuted, DASS es etwas enthält.

if contains == true; wäre logischer (ist aber nur ein schönheitsfehler, finde ich)
 

r.w.

Bekanntes Mitglied
Ob o enthalten ist prüfe ich doch schon in der contains-Methode, oder? Das war jedenfalls beabsichtigt.

Stimmt, trotzdem ist die return-Anweisung so notwendig, um abzufangen, ob das Array voll ist.

Also das Array hat 10 Stellen. Angenommen, es enthält schon 3 Werte und ich möchte jetzt einen vierten Wert einfügen. Funktioniert es mit dieser Methode, auch, dass der Wert an der leeren 4. Stelle eingefügt wird?
Wenn das Array zuvor leer war ja. Sind allerdings irgendwann mehr als 3 Elemente hinzugefügt
und dann z.B. das Element an Stelle 2 "gelöscht" worden nicht mehr. Die Methode weist o immer
dem ersten gefundenen Null-Element zu.


Ah, ich seh, du hast an dem Code was geändert. Jetzt erscheint es mir auch logisch. Danke!
Edit war mein Freund. ;-)
 

r.w.

Bekanntes Mitglied
...

in der innnersten if schleife die du da hast :)


P.S. die Bennenung/Logik deiner "contains" methode ist etwas irreführend.... if contanis == false ? Wenn man es liest, klingt es so, als ob es NICHTS enthält, wobei es bedeuted, DASS es etwas enthält.

if contains == true; wäre logischer (ist aber nur ein schönheitsfehler, finde ich)

Wieso ist die Benennung irreführend? Die Funktion contains(o), liefert true zurück
wenn das Element o enthalten ist, sonst false. Ist doch durchaus logisch und wird
allgemein so angewandt.

Beispiel:
Vector (Java 2 Platform SE v1.4.2))


BTW: Den if-Schleifen-Gag überlasse ich dem Nächsten. ;-)

VG ROlf
 
T

Tomate_Salat

Gast
Ok, r.w. ich bin ein nächster und nehme an :p :joke:

anstatt: if(contains(o)==false) kann man kürzer schreiben: if(!contains(o)).
Und naja, if(contains(o)==true) kann ebenfalls noch einfacher kürzer schreiben: if(contains(o)).

eine (if-)abfrage wird nur dann ausgeführt, wenn der Ausdruck darin true ist, dass braucht man nicht noch explizit mit [c]==true[/c] prüfen.
 

destiny

Mitglied
Wieso ist die Benennung irreführend? Die Funktion contains(o), liefert true zurück
wenn das Element o enthalten ist, sonst false. Ist doch durchaus logisch und wird
allgemein so angewandt.

VG ROlf

Ich habe Kritik an der letzten else{ } schleife geübt (von contains(o)). Du bekommst ein false, wenn: o!=null ist. Das ist meiner Meinung nach nicht logisch:

Beispiel:
Wenn man nun einen gültigen Wert für String o übergibt, erfült man in Zeile 5 irgendwann die Bedingung, in Zeile 6 bekommt man ein "true"! (soweit ok) DANN geht die Methode aber weiter... es wird geprüft, ob o == null ist, was es natürlich nicht ist, da wir ja zuvor schon ein true bekommen haben (für einen eingegebenen Wert).
Also kommt: else { return false; }

Die Methode gibt immer ein false aus, auch wenn es ein true zuvor ausgibt... (oder es gibt eine Meldung aus mit: "O darf nicht null sein".

Korrigiert mich, wenn ich falsch liege^^ aber ich denke es ist so... und somit eben doch nicht logisch.
 

xehpuk

Top Contributor
Wenn man nun einen gültigen Wert für String o übergibt, erfült man in Zeile 5 irgendwann die Bedingung, in Zeile 6 bekommt man ein "true"! (soweit ok) DANN geht die Methode aber weiter...
Warum geht die Methode dann weiter? return ist return. Springt aus der Methode und gibt ggf. einen Wert zurück. (Ausnahmen wie try-finally bestätigen die Regel. :bae:)

Siehe:
Branching Statements (The Java™ Tutorials > Learning the Java Language > Language Basics)
Blocks and Statements
Und zu guter Letzt:
if-schleife.de ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Immer dieselbe Zufallszahl Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
F Warum muss ich ein SSL cert immer manuell hinzufügen? Java Basics - Anfänger-Themen 46
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
J Componente immer in Front halten, wie? Java Basics - Anfänger-Themen 5
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 5
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
I Array übernimmt immer den letzten Input. Java Basics - Anfänger-Themen 14
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
CptK Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
IMain23 2d Array variabler Spaltenwert, Spaltenwert immer um eins erhöhen Java Basics - Anfänger-Themen 3
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
N Arbeitsspeicher nach kompilieren immer voller Java Basics - Anfänger-Themen 6
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
B Operatoren Java berechnet immer 0? Java Basics - Anfänger-Themen 3
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
S Repaint() in der Schleife funktioniert nicht immer Java Basics - Anfänger-Themen 5
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
N Immer Aktiv sein. Java Basics - Anfänger-Themen 8
D Array wird immer mir 100 für jeden Wert initialisiert? Java Basics - Anfänger-Themen 2
J Ergebnis immer 0 Java Basics - Anfänger-Themen 8
S If-Anweisunng ist IMMER true Java Basics - Anfänger-Themen 2
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
S UserPref und Java Application klappt immer nicht. Java Basics - Anfänger-Themen 2
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
F String immer weiter nach Bedarf vergrößern Java Basics - Anfänger-Themen 3
X Muss man das immer so schreiben o.O Java Basics - Anfänger-Themen 3
F Timer beendet nicht immer Java Basics - Anfänger-Themen 2
N Boolean Werte - immer "false" Java Basics - Anfänger-Themen 5
P JavaFX Textfelder geben immer null zurück Java Basics - Anfänger-Themen 8
M zufälliges Setzen von Schiffen in while klappt nicht immer Java Basics - Anfänger-Themen 3
S Random IDs immer 10-stellig? Wie? Java Basics - Anfänger-Themen 5
B Klassen Objekte werden immer überschrieben Java Basics - Anfänger-Themen 10
T Muss ein Parametertest immer eine eigene Testklasse sein? Java Basics - Anfänger-Themen 3
C JavaMail funktioniert nicht immer Java Basics - Anfänger-Themen 8
J .txt Datei "einlesen "und in String speichern ergibt immer NULL Java Basics - Anfänger-Themen 17
M Noch immer Probleme mit exec Java Basics - Anfänger-Themen 15
A Java Arrays immer um eins "vergrößern" Java Basics - Anfänger-Themen 4
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
R Hashset.add(Array) liefert immer true? Java Basics - Anfänger-Themen 23
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
A Warum immer das "J" im Klassennamen? Java Basics - Anfänger-Themen 10
M Erste Schritte Eclipse führt immer das gleiche Programm aus Java Basics - Anfänger-Themen 6
B Schlüsselworte this - immer oder nur wenn wirklich notwendig? Java Basics - Anfänger-Themen 9
A Wieso wird immer 0 ausgegeben? Java Basics - Anfänger-Themen 4
C 2 Objekte, 1 immer Null? Java Basics - Anfänger-Themen 8
P Classpath falscher Classpath, aber nicht immer Java Basics - Anfänger-Themen 19
E JButtons auf JFrame nicht immer sichtbar Java Basics - Anfänger-Themen 4
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
M OOP Graphics immer selbstbezihend Java Basics - Anfänger-Themen 12
D . ist nicht immer .!? Java Basics - Anfänger-Themen 18
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
J \n funktioniert nicht immer Java Basics - Anfänger-Themen 10
L Woerterbuch liefert immer "null" Java Basics - Anfänger-Themen 41
J Datentypen Math.sqrt() immer NaN Java Basics - Anfänger-Themen 8
T Datei so speichern das sie immer erreichbar ist Java Basics - Anfänger-Themen 2
Os-Programming Checkbox immer wieder überprüfen Java Basics - Anfänger-Themen 13
ruutaiokwu final wenn immer möglich verwenden? Java Basics - Anfänger-Themen 30
E Input/Output Datei immer weiter erweitern Java Basics - Anfänger-Themen 4
D Muss ich eigentlich immer auf die Verwendung des richtigen Datentyps achten? Java Basics - Anfänger-Themen 7
B if erzeugt nur immer ein FALSE Java Basics - Anfänger-Themen 2
M Tabelle mit immer sortiertem Inhalt Java Basics - Anfänger-Themen 5
F Midi-Sequenzer gibt immer denselben, schrägen Ton aus? Java Basics - Anfänger-Themen 2
M isHidden() von java.io.File liefert immer true in Windows Java Basics - Anfänger-Themen 3
A Immer wird "gut" ausgegeben Java Basics - Anfänger-Themen 14
G Immer mehr Threads beim Selbstaufruf der main-Methode Java Basics - Anfänger-Themen 3
N immer Setter-Methoden verwenden? Java Basics - Anfänger-Themen 54
M immer noch usedelimiter Java Basics - Anfänger-Themen 4
R ARRAY/List die sich immer wieder von vorne neu auffüllt ? Java Basics - Anfänger-Themen 21
Y JFrame immer im Focus ? Java Basics - Anfänger-Themen 7
N ArrayList wird immer um zwei Elemente erweitert Java Basics - Anfänger-Themen 9
J cast zu int immer 0.. Java Basics - Anfänger-Themen 6
B Process.getInputStream immer leer Java Basics - Anfänger-Themen 3
T ArrayList immer die letzte Zeile Java Basics - Anfänger-Themen 2
C Array ist befüllt, doch gibt sie immer 0 zurück Java Basics - Anfänger-Themen 3
F Immer nur drei Werte lesen Java Basics - Anfänger-Themen 9
B Warum kommt immer die 0 als Ergebnis? Was habe ich falsch gemacht? Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben