Warum tut der compiler beschweren", während erwartet", wenn ich versuche, um mehr code?
Schreiben Sie ein Programm, mit dem ein Wort mit @ - Zeichen als Eingabe. Wenn das Wort nicht enthalten,@, sollte es den Benutzer auffordern, ein Wort mit @. Einmal ein Wort mit @ gelesen, es sollte die Ausgabe der word dann beenden.
Dies ist, was ich bisher getan habe:
public class find {
public static void main(String[] args) {
System.out.println(" Please enter a word with @ ");
Scanner scan = new Scanner(System.in);
String bad = "@";
String word = scan.next();
do
if (!word.contains(bad))
System.out.println(" Please try again ");
else
System.out.println(" " + word);
while (!word.contains(bad));
}
}
Kann ich es zu beenden, nach der ein Wort mit "@" wird als input, aber wenn ich versuche, fügen Sie einen Scanner, um die Zeile nach "bitte versuchen Sie es erneut", heißt es while expected
.
- Es ist immer besser, do/while, if/else,for, etc., code umgeben mit öffnen/schließen-Spange.
- Was ist Ihre Frage? Funktioniert dein code kompilieren? Wenn nicht, was ist die genaue Fehlermeldung. Kopieren und fügen Sie es hier, damit wir Ihnen helfen können.
- Du meinst Klammern. Aber ehrlich gesagt würde dies wie erwartet ausgeführt, da gibt es nicht mehrere Anweisungen in den block.
- Ich denke, dass Problem mit do/while.
- poste es als Antwort, da der OP will ein neues Wort Lesen, auf jeder Schleife Klammern sind erforderlich, weil diese Beträge in die 2 Aussagen.
- dies würde wie erwartet ausgeführt, ja. Allerdings wäre es schwierig, ein anderes add-Anweisung wie eine Schleife, das ist genau das problem, das der OP beschreibt.
- Hinzugefügt als Antwort.
- Ja, ich bin mir bewusst, dass dies funktionieren würde, aber es gibt ernsthafte Probleme mit ihm anders. Lediglich den Hinweis es aus.
- ok, ich habe den Klammern und jetzt wenn ich versuche, um einen anderen scanner in der if-Anweisung nach "Bitte versuchen Sie es erneut" es sind Fehler beim kompilieren sagt "else" ohne " wenn "
- Jetzt wieder, fügen Sie Klammern um die if-Anweisung....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Problem ist, Sie fehlt umgebenden geschweiften Klammern bei do/while:
werden sollte:
Einige Leute können nicht wie, aber mein Vorschlag ist, verwenden Sie immer die open/close brackets. In diesem Fall für den code, if/else, als auch. Es vermeidet viel Verwirrung.
Dies ist, wo Ihr problem liegt:
Müssen Sie Klammern aus, wo die Schleife beginnt, bis es endet. |Also dieses Ding sollte wie:
Für eine Bessere Praxis sollten Sie Überprüfen
do...while
Schleifen hier.Das problem mit deinem code ist es nicht erneut das Wort zu Lesen in der Schleife.
Ändern Sie Ihre Schleife wie diese (minimale änderung an Ihrem code).
Und ja, wie andere haben darauf hingewiesen, versuchen Sie, verwenden Sie Klammern besonders bei geschachtelten Konstrukten.
Gibt es zwei Probleme.
Auch ich bevorzuge
while
Schleife besser in dem Fall als Gegensatz zudo-while
- Schleife, wie unten beschrieben.Bitte beachten Sie auch, dass, wenn Sie
scan.next()
wird, liest jedes Wort einzeln, wenn eingegeben, die in der gleichen Zeile.