For-Schleife und anderes

Sibylle

Mitglied
Guten Tag,

zur Lösung einer kleinen Aufgabe bitte ich um mehrere Hinweise:

a. Gibt es die Möglichkeit eine For-Schleife mit einem negativen Step auszustatten?
Beispiel: for (lv = 20; lv = 0; lv --)

Das klappt leider nicht. Ist es ein Syntaxproblem oder überhaupt nicht möglich?

b. Eine Texteingabe soll auf ein Palindrom untersucht werden.
Dazu soll Zeichen für Zeichen vom Textende her in eine Charvariable ausgelesen werden und die
Charvariableninhalte wieder zu einem Text verknüpft werden

String texteingabe;
String textausgabe;
textausgabe = "";
char c = '';
int lv, laenge, zaehler;
texteingabe = tftexteingabe.getText(); // vom Textfeld
laenge = texteingabe.length();
zaehler = laenge;
for (lv = 0; lv < laenge; lv ++)
{
zaehler = zaehler - 1;
c = texteingabe.charAt(zaehler);
textausgabe = textausgabe + c; // ist vermutlich so nicht möglich
}

Überprüfung ob Texteingabe = Textausgabe

tftextausgabe.setText(textausgabe);


Ich würde mich sehr freuen, wenn sich jemand die Mühe machen würde und Tipps/Anregungen/Denkanstöße geben würde.

Dafür besten Dank im Voraus.

Gruß

Sibylle
 

srea

Bekanntes Mitglied

Hi.
zur Lösung einer kleinen Aufgabe bitte ich um mehrere Hinweise:

a. Gibt es die Möglichkeit eine For-Schleife mit einem negativen Step auszustatten?
Beispiel: for (lv = 20; lv = 0; lv --)

Das klappt leider nicht. Ist es ein Syntaxproblem oder überhaupt nicht möglich?

Java:
for (int i = 10; i > 0; i --)
			System.out.println(i);
geht bei mir ohne Probleme. lv = 0 macht ja wenig Sinn, da er solange die Schleife durchlaufen soll wie "lv = 0" ist.

b. Eine Texteingabe soll auf ein Palindrom untersucht werden.
Dazu soll Zeichen für Zeichen vom Textende her in eine Charvariable ausgelesen werden und die
Charvariableninhalte wieder zu einem Text verknüpft werden

String texteingabe;
String textausgabe;
textausgabe = "";
char c = '';
int lv, laenge, zaehler;
texteingabe = tftexteingabe.getText(); // vom Textfeld
laenge = texteingabe.length();
zaehler = laenge;
for (lv = 0; lv < laenge; lv ++)
{
zaehler = zaehler - 1;
c = texteingabe.charAt(zaehler);
textausgabe = textausgabe + c; // ist vermutlich so nicht möglich
}

Überprüfung ob Texteingabe = Textausgabe

tftextausgabe.setText(textausgabe);

Java:
String texteingabe;
String textausgabe;
textausgabe = "";
char c;
int lv, laenge, zaehler;
texteingabe = tftexteingabe.getText(); 
laenge = texteingabe.length();
zaehler = laenge;

for (lv = 0; lv < laenge; lv ++) { 
    zaehler = zaehler - 1;
    c = texteingabe.charAt(zaehler);
    textausgabe = textausgabe + c;  
}

if (texteingabe.equals(textausgabe)) 
    System.out.println("Jop!");

tftextausgabe.setText(textausgabe);
???:L
 
Zuletzt bearbeitet:

Haave

Top Contributor
Wie srea schon andeutete, sind hier ein paar (Denk-) Fehlerchen drin:
Beispiel: for (lv = 20; lv = 0; lv --)
1. Du initialisierst die Variable lv nicht. Schreibe
Java:
int lv = 20;
(ich gehe hier davon aus, dass auch weiter oben im Code das noch nicht geschehen ist).
2. Der Mittelteil ist die Bedingung, zu der die For-Schleife ausgeführt wird; die ergibt jedoch nicht besonders viel Sinn. Überleg mal: zuerst weist du der Variablen lv den Wert 20 zu und dann soll die Schleife so lange ausgeführt werden, wie lv 0 ist? Das Programm würde sofort wieder aus der Schleife austreten, da die Bedingung ja nicht erfüllt ist.
3. Grundsätzlich kannst du im dritten Teil der For-Schleife jede Operation an einer Variablen vornehmen, das beschränkt sich nicht auf lv++ und lv--. Du kannst all das schreiben, was du auch am Ende einer while-Schleife schreiben würdest, also auch kompliziertere Ausdrücke wie
Java:
lv = (lv%3)+2;
- vollkommen egal ;)

Ach ja: Formatiere deinen Code am besten immer mit den
Java:
-Tags und arbeite mit Einrückungen, das macht den Code ordentlicher und leichter zu lesen.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Abgesehen von den Ausführungen meiner Vorredner: Auch wenn es hier nicht sinnvoll wäre, vergleicht man primitive Datentypen in Java mit == und nicht mit =.Ein = wird ausschließlich für Zuweisungen verwendet.
 

Haave

Top Contributor
Abgesehen von den Ausführungen meiner Vorredner: Auch wenn es hier nicht sinnvoll wäre, vergleicht man primitive Datentypen in Java mit == und nicht mit =.Ein = wird ausschließlich für Zuweisungen verwendet.
Landei hat Recht, darauf habe ich eben vergessen hinzuweisen. Also Ergänzung: Da du im Mittelteil eine Bedingung haben möchtest, brauchst du etwas, was am Ende einen booleschen Ausdruck ergibt - im Falle von Gleichheit sind es die doppelten Gleichheitszeichen.
 

Sibylle

Mitglied
Hi.


Java:
for (int i = 10; i > 0; i --)
			System.out.println(i);
geht bei mir ohne Probleme. lv = 0 macht ja wenig Sinn, da er solange die Schleife durchlaufen soll wie "lv = 0" ist.



Java:
String texteingabe;
String textausgabe;
textausgabe = "";
char c;
int lv, laenge, zaehler;
texteingabe = tftexteingabe.getText(); 
laenge = texteingabe.length();
zaehler = laenge;

for (lv = 0; lv < laenge; lv ++) { 
    zaehler = zaehler - 1;
    c = texteingabe.charAt(zaehler);
    textausgabe = textausgabe + c;  
}

if (texteingabe.equals(textausgabe)) 
    System.out.println("Jop!");

tftextausgabe.setText(textausgabe);
???:L

Hi,

vielen Dank für Deine Antworten.
Der Hinweis zu Frage a. leuchtet ein, ist verstanden. Danke.


Inzwischen habe ich das Programm ein wenig umgeschrieben:

String texteingabe;
String textausgabe;

char c;
int lv, laenge, zaehler;

textausgabe = "";

texteingabe = tftexteingabe.getText();

laenge = texteingabe.length();
zaehler = laenge;
for (lv = 0; lv < laenge; lv ++)
{
zaehler = zaehler - 1;
c = texteingabe.charAt(zaehler);
textausgabe.concate c;
}

if (texteingabe.equals(textausgabe))
tftextausgabe.setText(textausgabe);
else
tftextausgabe.setText("falsch");

Das Programm will aber dennoch nicht. Es steckt noch ein Fehler drin, der sich mir nicht zeigen will.
Hast Du einen weiteren Tipp?

Gruß
Sibylle
 

srea

Bekanntes Mitglied
Wie du hier sehen kannst erwartet die Methode String#concat einen String als Argument und keinen char. Diese Methode ist somit für deine Umsetzung nicht geeignet. Warum bleibst du denn nicht bei deiner vorigen Lösung?

Java:
        String texteingabe;
		String textausgabe;

		char c;
		int lv, laenge, zaehler;

		textausgabe = "";
		texteingabe = tftexteingabe.getText();

		laenge = texteingabe.length();
		zaehler = laenge;
		
		for (lv = 0; lv < laenge; lv ++) {
			zaehler = zaehler - 1;
			c = texteingabe.charAt(zaehler);
			textausgabe += c;
		}

		if (texteingabe.equals(textausgabe))
			tftextausgabe.setText(textausgabe);
		else
			tftextausgabe.setText("falsch");
 
Zuletzt bearbeitet:

Sibylle

Mitglied
Hallo,

Du hast ja wirklich eine große Geduld.

Ok, den Unterschied zu concate habe ich verstanden.
Inzwischen habe ich ein wenig weiter "probiert" und festgestellt, dass der String wirklich in umgekehrter Reihenfolge erstellt wird.

Auffallend ist nun, dass im Textfeld keine Anzeige erscheint und das kann ich mir nicht erklären.
Hast Du eine Erklärung dafür?

Eine zweite Frage: Das Testen eines Programms bereitet mir erhebliche Probleme.
System.out.println(Variable); scheint wohl in einer visual class nicht zu funktionieren?
Wie also testet man den Code sinnvoll?

Viele Grüße

Sibylle
 

srea

Bekanntes Mitglied
Inzwischen habe ich ein wenig weiter "probiert" und festgestellt, dass der String wirklich in umgekehrter Reihenfolge erstellt wird.

Auffallend ist nun, dass im Textfeld keine Anzeige erscheint und das kann ich mir nicht erklären.
Hast Du eine Erklärung dafür?

Mit .setText sollte das eigentlich problemlos funktionieren. Wo ändert er bei dir denn den Text? Nach einem Button-Klick oder ähnlichem? Hier wäre ein wenig mehr Code hilfreich (in
Java:
-Tags ;) )

[QUOTE]
Eine zweite Frage: Das Testen eines Programms bereitet mir erhebliche Probleme.
System.out.println(Variable); scheint wohl in einer visual class nicht zu funktionieren?
Wie also testet man den Code sinnvoll?
[/QUOTE]

Muss leider sagen, das ich nicht verstehe was du willst :(
 

Sibylle

Mitglied
Hallo,

inzwischen habe ich das Programm neu erstellt - und
es läuft.

Ich danke Dir für Deine zahlreichen Hilfen. Ohne diese hätte es nicht geklappt.
Tausend Dank.

Einen schönen Abend.

Gruß

Sibylle
 

Oben