While-Schleife funktioniert nicht!

actlyc

Mitglied
Hallo :)

In meinem Quellcode funktioniert nicht die While-Schleife. Ich möchte die Schleife so einsetzen, dass der Befehl immer wieder ausgeführt wird, bis man das Programm via "Exit" abbricht.

Also für die Konsoleneingaben: "Up", "Down", "Right", "Left" soll die Schleife weiterlaufen.
Für die Konsoleneingabe: "Exit" soll das Programm stoppen.

Mein Quellcode mit While-Schleife sieht so aus.

Java:
import java.util.Scanner;

  class Spielfeld {
    public static void main(String[] args) {
       char[][] room = new char[4][8];
       int y=0, z=0;

       for (char i = 0; i < 4; i++) {   //hier wird das ganze Array mit '.' gefüllt
           for (char j = 0; j < 8 ; j++) {
               room[i][j] = '.';
           }
       }
       room[y][z] = 'P';                  //Feld 0/0 wird mit 'P' gefüllt muss nur 1* gemacht werden deshalb nicht in for

            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            System.out.print(room[i][j]);
            }
            System.out.println();
               }
        while (Eingabe.equals("Right","Left","Up","Down")) {   /Hier fängt die while-Schleife an
        Scanner scan = new Scanner(System.in);
        String Eingabe;
        System.out.println();
        System.out.print(" Up?");
        System.out.print(" Down?");
        System.out.print(" Left?");
        System.out.print(" Right?");
        System.out.println();
        System.out.print(" or Exit");

        Eingabe = scan.next();
        if(Eingabe.equals("Right")) {
            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            room[i][j] = '.';
            room[y][z] = '.';
            room[y][z+1] = 'P';
            System.out.print(room[i][j]);
                    }
            System.out.println();

            }     
        }
                if(Eingabe.equals("Left")) {
                for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
                for (char j = 0; j < 8; j++) {
                room[i][j] = '.';
                room[y][z] = '.';
                room[y][z-1] = 'P';
                System.out.print(room[i][j]);
                        }
                System.out.println();
                }
                }
                if(Eingabe.equals("Up")) {
            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            room[i][j] = '.';
            room[y][z] = '.';
            room[y-1][z] = 'P';

            System.out.print(room[i][j]);
                    }
            System.out.println();
            }
        }
            if(Eingabe.equals("Down")) {
            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            room[i][j] = '.';
            room[y][z] = '.';
            room[y+1][z] = 'P';
            System.out.print(room[i][j]);
                    }
            System.out.println();

            }
        }
    }

}

Freue mich über jede Hilfe :)
Lg
 
Zuletzt bearbeitet von einem Moderator:

T_T

Bekanntes Mitglied
Java:
while (Eingabe.equals("Right","Left","Up","Down")) {

Zitat von Oracle [1]:

"public boolean equals(Object obj) Indicates whether some other object is "equal to" this one."...

Als Parameter hast du nur ein Object und nicht mehrere (wie bei dir). Lösen kannst du das mit dem ODER Operator " || " . Ich hoffe, dieser kleine Denkanstoß hat geholfen.

Lg

[1]: http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)
 

actlyc

Mitglied
Also muss ich nur den Scanner vor die While-Schleife nehmen und bei der While-Schleife zwischen jeden Operator ein || setzen.

So richtig: (Eingabe.equals("Right"||"Left"||"Up"||"Down")) { ?
 

actlyc

Mitglied
Code:
while (Eingabe.equals("Right") || (Eingabe.equals("Left")(Eingabe.equals("Up") || (Eingabe.equals("Down")); {
        String Eingabe;
So, kriege aber noch zwei Fehlermeldungen mit 1. ')' expected, wobei alle Klammern eigentlich richtig gesetzt sind und 2. || not a statement.
 

VfL_Freak

Top Contributor
Moin,
Code:
while (Eingabe.equals("Right") || (Eingabe.equals("Left")(Eingabe.equals("Up") || (Eingabe.equals("Down")); {
        String Eingabe;
So, kriege aber noch zwei Fehlermeldungen mit 1. ')' expected, wobei alle Klammern eigentlich richtig gesetzt sind und 2. || not a statement.
Zum einen fehlt eine Veroderung (nach dem left) und dann muss das Semikolon vor dem "{" weg ...

EDIT: stimmt - Stichwort: jede öffnende Klammer braucht auch eine Schließende !!

Gruß Klaus
 

actlyc

Mitglied
Code:
        while (Eingabe.equals("right")) || (Eingabe.equals("left")) || (Eingabe.equals("up")) || (Eingabe.equals("down")) {

Klammern stimmen, || wurde gesetzt oder kommt ganz am Ende noch einer hin? Variablen wurden mit Kleinbuchstaben geschrieben. Geschweifte Klammer am Ende des Quellcodes wurde gesetzt.

3 Fehlermeldungen:


Spielfeld.java:22: error: illegal start of expression

while (Eingabe.equals("right"))||(Eingabe.equals("left"))||(Eingabe.equals("up"))||(Eingabe.equals("down")) {

^

Spielfeld.java:22: error: not a statement

while (Eingabe.equals("right"))||(Eingabe.equals("left"))||(Eingabe.equals("up"))||(Eingabe.equals("down")) {

^

Spielfeld.java:22: error: ';' expected

while (Eingabe.equals("right"))||(Eingabe.equals("left"))||(Eingabe.equals("up"))||(Eingabe.equals("down")) {
 

JStein52

Top Contributor
jetzt hast du dir den ganzen Schleifenkopf verhunzt. Wieder mein Vorschlag:

Code:
while (true) {
    ....   bleibt alles wie es ist

    if (Eingabe.equals("exit")) {
        break;
    }
}
 

Joose

Top Contributor
Code:
        while (Eingabe.equals("right")) || (Eingabe.equals("left")) || (Eingabe.equals("up")) || (Eingabe.equals("down")) {

Klammern stimmen,

Nein die Klammern sind immer noch falsch ;)
while(boolscher ausdruck) so sollte der Kopf der Schleife ausschauen. Bei dir fehlt eine Klammer um die ganzen || Verknüpfungen.

Bei diesem Ausdruck (Eingabe.equals("right")) kannst du dir die äußere Klammer sparen.

Wieder mein Vorschlag:

Code:
while (true) {
...
Dafür muss er zwar die wenigstens Änderungen machen, aber ich würde nicht zu einer while(true) Variante raten. Man sollte immer eine Abbruchbedingung deklarieren.
 

actlyc

Mitglied
Code:
        while (Eingabe.equals("right") || Eingabe.equals("left") || Eingabe.equals("up") || Eingabe.equals("down")) {

Habe die unnötigen Klammern entfernt.
Kriege beim kompilieren 4 Fehlermeldungen mit "cannot find symbol" wobei immer auf das E von Eingabe gezeigt wird.
 

JStein52

Top Contributor
Kriege beim kompilieren 4 Fehlermeldungen mit "cannot find symbol"
Das habe ich doch schon vor einer Stunde gesagt. Und ich weiss auch schon wie es weitergeht. Im übrigen ist die While-Bedingung so wie sie da steht falsch. sie wird nämlich nicht bei der Eingabe von "exit" beendet sondern bei jeder anderen auch, ausser den explizit aufgeführten. Insbesondere wenn man sich mal verschreibt. Ich bin immer noch für meine while(true) !!
 
So wärs richtig:
Java:
while ( Eingabe.equals("right") || Eingabe.equals("left") || Eingabe.equals("up") || Eingabe.equals("down") ) {
Oder andersrum:
Java:
while ( !Eingabe.equals("Exit") )
 

actlyc

Mitglied
Habe den Schleifenkopfvorschlag von @JStein52 und @Tommy Nightmare genommen.
Zudem habe ich Eingabe vor der Schleife deklariert.

Quellcode
Code:
import java.util.Scanner;

  class Spielfeld {
    public static void main(String[] args) {
       char[][] room = new char[4][8];
       int y=0, z=0;
       Eingabe = scan.next();

       for (char i = 0; i < 4; i++) {   //hier wird das ganze Array mit '.' gefüllt
           for (char j = 0; j < 8 ; j++) {
               room[i][j] = '.';
           }
       }
       room[y][z] = 'P';                  //Feld 0/0 wird mit 'P' gefüllt muss nur 1* gemacht werden deshalb nicht in for

            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            System.out.print(room[i][j]);
            }
            System.out.println();
               }

        Scanner scan = new Scanner(System.in);
        while (!Eingabe.equals("Exit")) {
        String Eingabe;
        System.out.println();
        System.out.print(" up?");
        System.out.print(" down?");
        System.out.print(" left?");
        System.out.print(" right?");
        System.out.println();
        System.out.print(" or exit");

        if(Eingabe.equals("right")) {
            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            room[i][j] = '.';
            room[y][z] = '.';
            room[y][z+1] = 'P';
            System.out.print(room[i][j]);
                    }
            System.out.println();
                }
                }
                if(Eingabe.equals("left")) {
                for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
                for (char j = 0; j < 8; j++) {
                room[i][j] = '.';
                room[y][z] = '.';
                room[y][z-1] = 'P';
                System.out.print(room[i][j]);
                        }
                System.out.println();
                }
                }
                if(Eingabe.equals("up")) {
            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            room[i][j] = '.';
            room[y][z] = '.';
            room[y-1][z] = 'P';

            System.out.print(room[i][j]);
                    }
            System.out.println();
            }
        }
            if(Eingabe.equals("down")) {
            for (char i = 0; i < 4 ; i++) {     //hier wird das Array Ausgegebn
            for (char j = 0; j < 8; j++) {
            room[i][j] = '.';
            room[y][z] = '.';
            room[y+1][z] = 'P';
            System.out.print(room[i][j]);
                    }
                    System.out.println();


                }
                if (Eingabe.equals("exit")) {
                break;
                }
            }
        }
    }
}

Kriege trotzdem Fehlermeldungen wie "cannot find symbol" mit dem Pfeil auf Eingabe.
 

JStein52

Top Contributor
Er liest ja die Beiträge, aber es wird halt einfach immer schlimmer.
schmeiss das mit dem Eingabe = scan.next(); ganz oben einfach mal ganz raus. Und schreibe vor die while-Schleife einfach:

String Eingabe = "Initialisierung";

in der Schleife schmeisst du dann die Zeile String Eingabe ebenfalls raus.
 

actlyc

Mitglied
Habe ich gemacht, jetzt wird auch wie gewollt zuerst das Array angezeigt.
Jedoch reagiert das Programm nicht auf eingaben wie "right", "left" usw.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
D while-Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
G While schleife funktioniert nicht- warum? Java Basics - Anfänger-Themen 4
M While-Schleife mit Wartezeit Java Basics - Anfänger-Themen 15
Ranger229 Endless loop in while Schleife Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
Ostkreuz While Schleife neustarten Java Basics - Anfänger-Themen 20
S Erste Schritte do-while Schleife Münzwurf Java Basics - Anfänger-Themen 1
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
P Best Practice While loop schleife Java Basics - Anfänger-Themen 5
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
A Return in While Schleife Java Basics - Anfänger-Themen 6
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
J do..while Schleife Java Basics - Anfänger-Themen 14
B Zuweisungen und Methodenaufrufe in Bedingung der while Schleife? Java Basics - Anfänger-Themen 2
JavaBeginner22 Würfeln bis 6 while Schleife Java Basics - Anfänger-Themen 13
L while Schleife mit 2 Bedingung endet nicht Java Basics - Anfänger-Themen 3
D Array mit while-schleife Java Basics - Anfänger-Themen 12
B do while Schleife Java Basics - Anfänger-Themen 3
SergioCK Do while Schleife wiederholen Java Basics - Anfänger-Themen 14
Informatikf Methoden While Schleife Java Basics - Anfänger-Themen 3
M While Schleife? Java Basics - Anfänger-Themen 4
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
A Wie schaffe ich das eine while Schleife addiert danach subtrahirt? Java Basics - Anfänger-Themen 1
J for /while Schleife Java Basics - Anfänger-Themen 5
A While Schleife - buubelsort methode Java Basics - Anfänger-Themen 2
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
S Do-While-Schleife Java Basics - Anfänger-Themen 2
S While Schleife Java Basics - Anfänger-Themen 4
S Do-While Schleife Java Basics - Anfänger-Themen 6
L String in Do-While-Schleife Abbruchkriterium Java Basics - Anfänger-Themen 1
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
B Verschachtelung von For-Schleife in While Schleife Java Basics - Anfänger-Themen 14
G while schleife Java Basics - Anfänger-Themen 11
G while schleife mit array Java Basics - Anfänger-Themen 12
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
G While schleife Java Basics - Anfänger-Themen 2
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
A Erste Schritte while-Schleife Java Basics - Anfänger-Themen 38
X While Do schleife funtioniert nicht Java Basics - Anfänger-Themen 5
J 2 "while"-Anweisungen in einer do-Schleife? Java Basics - Anfänger-Themen 4
W while Schleife und Bedingung Java Basics - Anfänger-Themen 11
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
P a cannot be resolved bei einer do while Schleife Java Basics - Anfänger-Themen 1
J While Schleife Java Basics - Anfänger-Themen 19
Z Return in While-Schleife Java Basics - Anfänger-Themen 7
N Methode mit While-Schleife und If-Bedingung und Array-Initialisierung Java Basics - Anfänger-Themen 4
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
helldunkel While Schleife trotz false Java Basics - Anfänger-Themen 4
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
b1ck while-Schleife Java Basics - Anfänger-Themen 10
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
E Alphabet mit einer while Schleife ausgeben Java Basics - Anfänger-Themen 3
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
$ Multiplikations-Rechner mit while Schleife Java Basics - Anfänger-Themen 8
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
snipesss Schlüsselworte While Schleife Java Basics - Anfänger-Themen 3
snipesss While Schleife Java Basics - Anfänger-Themen 6
A Do-While Schleife; int vergleich Java Basics - Anfänger-Themen 2
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
A While und For Schleife Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur do while- und while-Schleife Java Basics - Anfänger-Themen 4
C Do-While Schleife (Fehler bei der Klammerung?) Java Basics - Anfänger-Themen 8
C while-Schleife wird zuoft durchgeführt Java Basics - Anfänger-Themen 2
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
F Programm bricht While Schleife nicht ab Java Basics - Anfänger-Themen 4
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
C Erste Schritte Warum ist die While Schleife so schnell? Java Basics - Anfänger-Themen 5
A was wird in der while schleife gemacht Java Basics - Anfänger-Themen 3
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
Z Logikfehler do-while Schleife Java Basics - Anfänger-Themen 4
E While-Schleife Java Basics - Anfänger-Themen 6
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
A Probleme mit While Schleife Java Basics - Anfänger-Themen 10
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
LangUndBreit Erste Schritte 100% cpu auslastung (evtl unendliche while schleife?) Java Basics - Anfänger-Themen 1
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
T while Schleife Java Basics - Anfänger-Themen 22
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
F Problem mit der While schleife und dem Scanner Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben