for Schleifen: Verständnisproblem

Status
Nicht offen für weitere Antworten.

Serenity

Mitglied
Ich habe ein Prob. Ich versteh nicht wirklich oder kann es mir nicht wirklich vorstellen, was eine for-Schleife im Zusammenhang mit zb. das Beispiels hier macht:


Code:
String s="otto";  // soll überprüft werden, ob der String ein Pailindrom ist (otto kann man von links nach rechts lesen und umgekehrt)

public boolean isteinPalindrom() {
String a="";
for(int i= s.length()-1; 0<= i, --i) {
a+=s.charAt(i);
}
..... //usw...

Kann mir jemand das bitte Schritt für Schritt für dummies erklären? Auch mit irgendwelchen anderen Bsp.
Ich tuh mir da leider schwer auf sowas draufzukommen.

Vielen Dank im Vorraus!
 
S

stev.glasow

Gast
Code:
String s = "beispiel";

for(int i= 0; i < s.length(), ++i){  //geht jedes Zeichen von 0 bis zum Ende durch
   System.out.println(s.charAt(i));
}
Ausgabe:
B
e
i
s
p
i
e
l

for(int i= s.length()-1; 0<= i, --i){// geht jedes Zeichen vom Ende bis zum Anfang durch, sprich von hinten.
   System.out.println(s.charAt(i));
}
Ausgabe: 
l
e
i
p
s
i
e
b

Hoffe das hilft etwas :-/
 

mic_checker

Top Contributor
Serenity hat gesagt.:
Code:
String s="otto";  // soll überprüft werden, ob der String ein Pailindrom ist (otto kann man von links nach rechts lesen und umgekehrt)

public boolean isteinPalindrom() {
String a="";
for(int i= s.length()-1; 0<= i, --i) {
a+=s.charAt(i);
}
..... //usw...

Der String "otto" hat die Länge 4. i wird also mit 3 initialisiert. Die Schleife wird solange durchlaufen wie i größer gleich 0 ist. Abschließend wird i dekrementiert, also nachdem die Schleife durchlaufen wurde.
Mit dieser Konstruktion wird der String von hinten nach vorne durchlaufen und das aktuelle Zeichen an einen andern String konkateniert.

Immer noch unklar?
 

meez

Top Contributor
Ganz generell ist ein for Schleife in 4 Teile unterteilt:

Code:
for (1;2;4) {
   3
}


1: Ein Befehl. wird am Anfang der for Scheife ausgeführt.
2: Ein true|false Ausdruck (if Bedingung)
3: Code, welcher ausgeführt werden soll (Wird immer wieder wiederholt, solange 3 true ist)
4: Ein Befehl. Wird jedesmal am Ende eines Durchgangs ausgeführt, solange 3 true ist.
 

mic_checker

Top Contributor
Btw. hab hier mal eine etwas andere Variante zur Überprüfung auf ein Palindrom:

Code:
class Palindrom
{
	static public boolean check_palindrom(String str)
	{
		int low = 0, high = str.length()-1;
		
		while (low < high)							
			if(str.charAt(low++) != str.charAt(high--)) 
				return false;
									
		return true;
	}	

	public static void main(String[] args)
	{		
		System.out.println(check_palindrom("otteetto"));	
	}
}
 

Serenity

Mitglied
Danke, das was ihr gespieben habt, hab ich verstanden.

Trotzdem bin ich unfähig irgendwas "komplizierteres" mit Schleifen zu machen.

Bsp:

Code:
 String s="abcdef"; // ich will gucken, ob der String sortiert ist oder 
 //nicht (ich weiß, geht auch ohne Schleife, aber ich will die üben und verstehen)

for(int i=0; i<s.lenght()-1; i++) // geht den String vom 1Zeichen bis zum letzen Zeichen durch

Ich komm da nicht mehr weiter :(
Könnt mir irgendwie allgemeine Tips geben?
 

meez

Top Contributor
Das ist nicht ganz so simpel, was du machen willst. Zu testen, ob der String, bzw. die einzelnen Chars sortiert sind, ist etwas aufwändig...
 

mic_checker

Top Contributor
willst du schauen ob der String lexikographisch sortiert ist ?
Also es gilt ja bspw. a > A, das musst du beachten.

Btw. es heisst length() nicht lenght().
 

Serenity

Mitglied
mic_checker hat gesagt.:
willst du schauen ob der String lexikographisch sortiert ist ?
Also es gilt ja bspw. a > A, das musst du beachten.

Btw. es heisst length() nicht lenght().

ja genau das will ich...

ups^^" hab mich verschrieben

und was ist mit Zahlen? die kommen vor den Buchstaben oder?
 

mic_checker

Top Contributor
ja - hab hier mal schnell was geschrieben, sollte klappen, ansonsten melde dich.

Code:
   String s = "1ACabe";
	boolean sorted = true;
	
	for(int i = s.length()-1;i >= 1 && sorted == true;i--) 
		if(s.charAt(i) <= s.charAt(i-1))
			sorted = false;
	
	System.out.println(s+" ist sortiert ? "+sorted);
 

Serenity

Mitglied
Vielen Dank, es funktioniert.

Nun will ich wissen, ob ich den Ablauf richtig verstanden habe: (+Fragen^^")

1. i=e
2. e>=1 & sortiert // da ist was, was ich nicht so wirklich verstehe - wie soll ein Buchstabe größer als eine Zahl sein?
3. stimmt Schritt 2 --> true wird ausgegeben
stimmt Schritt 2 nicht --> wenn: e <= e-1, also b?? ist --> false
4. i wird um 1 erniedrigt --> i=b
dann wieder Schritt 2 usw....
 

mic_checker

Top Contributor
Code:
for(int i = s.length()-1;i >= 1 && sorted == true;i--)
Die Schreibweise "i >= 1 && sorted == true" führt dazu das u.U. die Schleife sich einige Durchläufe erspart. Nun geht er den String nämlich nicht unbedingt von Ende bis Anfang durch, sondern nur dann wenn sorted == true ist, ist sorted == false, steht fest das der String nicht sortiert ist (zumindest nicht in der Reihenfolge in der wir es haben wollen) und wir können uns die restlichen Durchläufe sparen.

Du kannst die zweite Bedingung (&& sorted == true) auch weglassen.

Welche Auswirkungen sie auf die Schleife hat?

Die Schleife wird früher abgebrochen wenn feststeht das der String kein Palindrom bildet, nicht mehr und nicht weniger ;)

1. i=e
2. e>=1 & sortiert // da ist was, was ich nicht so wirklich verstehe - wie soll ein Buchstabe größer als eine Zahl sein?

Zuersteinmal ist i eine Zählvariable - also kein Buchstabe. Damit ermittelst du nur die Zeichen des Strings an der entsprechenden Stelle. Warum die Buchstaben "größer" sind?
Schau dir mal die Code-Tabellen an:

0 - 9 liegen in 48 - 57
A - Z in 65 - 90
a - z in 97 - 122

Wenn du nun vergleichst ob A größer ist als 0, dann vergleichst du eigentlich 65 mit 48, da 65 > 48, ist A > 0.

Geh das Prog einfach mit paar Beispielen durch, lass von mir aus auch die zweite Bedingung weg.
Innerhalb der Schleife kannst du ja mit System.out.println(...) noch Sachen ausgeben lassen wenn du dir bei manchen Sachen nicht sicher sein solltest.

Hoffe konnte etwas helfen.
 
G

Guest

Gast
mic_checker hat gesagt.:
Code:
for(int i = s.length()-1;i >= 1 && sorted == true;i--)
Die Schreibweise "i >= 1 && sorted == true" führt dazu das u.U. die Schleife sich einige Durchläufe erspart. Nun geht er den String nämlich nicht unbedingt von Ende bis Anfang durch, sondern nur dann wenn sorted == true ist, ist sorted == false, steht fest das der String nicht sortiert ist (zumindest nicht in der Reihenfolge in der wir es haben wollen) und wir können uns die restlichen Durchläufe sparen.

Du kannst die zweite Bedingung (&& sorted == true) auch weglassen.

Welche Auswirkungen sie auf die Schleife hat?

Die Schleife wird früher abgebrochen wenn feststeht das der String nicht sortiert ist, nicht mehr und nicht weniger ;)

1. i=e
2. e>=1 & sortiert // da ist was, was ich nicht so wirklich verstehe - wie soll ein Buchstabe größer als eine Zahl sein?

Zuersteinmal ist i eine Zählvariable - also kein Buchstabe. Damit ermittelst du nur die Zeichen des Strings an der entsprechenden Stelle. Warum die Buchstaben "größer" sind?
Schau dir mal die Code-Tabellen an:

0 - 9 liegen in 48 - 57
A - Z in 65 - 90
a - z in 97 - 122

Wenn du nun vergleichst ob A größer ist als 0, dann vergleichst du eigentlich 65 mit 48, da 65 > 48, ist A > 0.

Geh das Prog einfach mit paar Beispielen durch, lass von mir aus auch die zweite Bedingung weg.
Innerhalb der Schleife kannst du ja mit System.out.println(...) noch Sachen ausgeben lassen wenn du dir bei manchen Sachen nicht sicher sein solltest.

Hoffe konnte etwas helfen.
 

mic_checker

Top Contributor
arg, wollte nur meinen beitrag editieren. falschen button erwischt.
hab gesehen das ich mittendrin von palindrom gesprochen hab, dabei sind wir ja bei der sortierung.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Verständnisproblem Marken und Schleifen Java Basics - Anfänger-Themen 19
J Array und Schleifen Verständnisproblem Java Basics - Anfänger-Themen 25
T schleifen Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
S Erste Schritte While Schleifen Java Basics - Anfänger-Themen 11
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
Mikejr Schleifen Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
K geschachtelte "for-Schleifen" Java Basics - Anfänger-Themen 3
Alen123 Potenzen in Schleifen Java Basics - Anfänger-Themen 26
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A Schleifen und Boolsche Ausdrücke Java Basics - Anfänger-Themen 42
W Schleifen Java Basics - Anfänger-Themen 36
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
Mojtaba1986 Hausaufgabe (Schleifen) Java Basics - Anfänger-Themen 33
A Schleifen Verzweigungen Java Basics - Anfänger-Themen 18
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
D Schleifen Problem Java Basics - Anfänger-Themen 2
H Muster mit verschachtelten Schleifen kreieren. Java Basics - Anfänger-Themen 2
A Schleifen in Java Java Basics - Anfänger-Themen 4
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
C Schleifen Durchlauf Java Basics - Anfänger-Themen 7
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
J Schleifen Wiederholendes Zeichenmuster Java Basics - Anfänger-Themen 4
K For-Schleifen Ablauf Java Basics - Anfänger-Themen 5
L Anzahl der Aufrufe von Schleifen bestimmen Java Basics - Anfänger-Themen 1
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Verschachtelte For Schleifen Java Basics - Anfänger-Themen 8
G Input/Output Schleifen Durchlauf Java Basics - Anfänger-Themen 5
A Erste Schritte Schleifen Java Basics - Anfänger-Themen 5
J Muster und Schleifen Java Basics - Anfänger-Themen 33
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
C Schleifen Java Basics - Anfänger-Themen 12
E geschachtelte for-schleifen Java Basics - Anfänger-Themen 6
L Übungsaufgabe zu Schleifen Java Basics - Anfänger-Themen 7
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
A Erste Schritte for-Schleifen vereinfachen Java Basics - Anfänger-Themen 5
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
kokojamboo92 Schleifen und Arrays Java Basics - Anfänger-Themen 7
N Problem mit Schleifen Java Basics - Anfänger-Themen 20
O Array, geschachtelte For-Schleifen Java Basics - Anfänger-Themen 34
S While-Schleifen Ausgabe als String? Java Basics - Anfänger-Themen 1
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
D verschachtelte Schleifen Java Basics - Anfänger-Themen 6
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
L Schachbrettnummerierung mit Schleifen.. Java Basics - Anfänger-Themen 3
H Schleifen Java Basics - Anfänger-Themen 8
L Zahlentripel und for-Schleifen Java Basics - Anfänger-Themen 2
T Spezielle Aufgabe zu Schleifen Java Basics - Anfänger-Themen 3
T Erste Schritte Schleifen-Stop Java Basics - Anfänger-Themen 14
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
I Mehre While-Schleifen hintereinander Java Basics - Anfänger-Themen 13
P Terminieren diese Schleifen Java Basics - Anfänger-Themen 6
L Was heißt terminieren bei Schleifen? Java Basics - Anfänger-Themen 3
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
C Erste Schritte While-Schleifen-Problem Java Basics - Anfänger-Themen 3
W Schleifen bei Greenfoot Java Basics - Anfänger-Themen 4
B Operatoren Stopp von Schleifen Java Basics - Anfänger-Themen 9
K Loop ohne Schleifen Java Basics - Anfänger-Themen 2
V Rechenzeichen bei Termen - Darstellung bei Schleifen Java Basics - Anfänger-Themen 7
E Muster auf der Konsole ausgeben lassen (Schleifen) Java Basics - Anfänger-Themen 7
C Erste Schritte Probleme bei Aufgaben zu Schleifen Java Basics - Anfänger-Themen 11
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Blöcke bei verschachtelten Schleifen Java Basics - Anfänger-Themen 3
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sternchenpyramide mit For-Schleifen erstellen Java Basics - Anfänger-Themen 9
H Best Practice Wie mit break verschachtelte Schleifen komplett verlassen? Java Basics - Anfänger-Themen 2
arti28 Erste Schritte For-Schleifen und While-Schleifen, String als Muster ausgeben. Java Basics - Anfänger-Themen 3
T [Schleifen] Schleifenproblem Java Basics - Anfänger-Themen 4
F Verschachtelte Schleifen Java Basics - Anfänger-Themen 4
J Hilfe verschachtelte Schleifen Java Basics - Anfänger-Themen 5
O Geschachtelte For-Schleifen Java Basics - Anfänger-Themen 1
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
Z Frage zu for-Schleifen Java Basics - Anfänger-Themen 5
M Wie kann ich eine Ausgabe vervielfachen? (Schleifen) Java Basics - Anfänger-Themen 4
Z Schleifen Beispiel: Fakultät Java Basics - Anfänger-Themen 26
T Erneute Frage zu Schleifen Java Basics - Anfänger-Themen 4
V Schleifen die nicht voneinander abhängen! (für CAN-BUS) Java Basics - Anfänger-Themen 10
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
S for-Schleifen Problem Java Basics - Anfänger-Themen 4
W Methoden While Schleifen Ergebnis im String speichern Java Basics - Anfänger-Themen 5
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
J Anzahl von for-Schleifen in Abhängigkeit von Zahleneingabe erzeugen Java Basics - Anfänger-Themen 1
X Methoden Logik-Problem mit Schleifen. Java Basics - Anfänger-Themen 7
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
W Aufgabe mit Schleifen Java Basics - Anfänger-Themen 8
M Sektkelch mit Schleifen Java Basics - Anfänger-Themen 9
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
I Listen, for - Schleifen Java Basics - Anfänger-Themen 8
N Schleifen Problem Java Basics - Anfänger-Themen 3
L Histogram mittels Schleifen und Arrays Java Basics - Anfänger-Themen 9
A Ausgabe von Schleifen nebeneinander? Java Basics - Anfänger-Themen 3
T durchlaufene while-Schleifen zählen Java Basics - Anfänger-Themen 3
L schleifen fehler Java Basics - Anfänger-Themen 12
X Array Ausgabe bei Verwendung von 2 Schleifen erklären Java Basics - Anfänger-Themen 8
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben