Java: Inkrementieren einer Variablen innerhalb einer for-Schleife
Ich bin in einer Anfänger-Java-Klasse und für ein Projekt brauche ich, um zu zählen, wie oft eine Bedingung TRUE zurückgibt(correctGuess) oder FALSE(incorrectGuess) mit einer Schleife in einer Schleife. Das problem, dass ich habe ist, dass die Variablen erhöht, die innerhalb der inneren Schleife nicht halten Ihre inkrementierten Wert, wie die Schleife wiederholt. Also die äußere while-Schleife die Bedingung nie false. Ich bin wirklich neu zu Programmieren, und ich kann nicht herausfinden, die Lösung. Vielen Dank im Voraus für Ihre Zeit mit dieser albernen Frage und wenn es Fragen gibt würde ich gerne eine bessere Erklärung. Der code sieht so aus:
int incorrectGuess = 0;
int correctGuess = 0;
while(incorrectGuess < 6 && correctGuess < WORD_LENGTH) {
//Gets the users first guess
System.out.print("Please guess a letter [A-Z]: ");
letterGuessed = keyboard.nextLine();
for (int i = 0; i < WORD_LENGTH; i++){
char value = wordLetterArray[i];
String letterArray_value = String.valueOf(value);
if(letterGuessed.equals(letterArray_value)){
++correctGuess;
}
else
System.out.println("Bad comparison!");
if(i == WORD_LENGTH)
++incorrectGuess;
}
}
- Nein, diese Werte zu halten. Was sagt Ihnen, dass Sie nicht halten?
- Das: if(i == WORD_LENGTH) innerhalb einer for-Schleife, mit dieser Bedingung beenden:i < WORD_LENGTH wird nie immer immer (für immer? foreverever? foreverever?) zu true ausgewertet werden.
- Was genau ist
incorrectGuess
eigentlich auf die Spur? Beachten Sie, dass seitincorrectGuess
erhöht wird innerhalb einer for-Schleife mit der Bedingungi < WORD_LENGTH
und auch innerhalb einer if-Anweisung mit der Bedingungi==WORD_LENGTH
es kann eigentlich nie erhöht werden, da es unmöglich ist, beide Bedingungen gleichzeitig wahr sein. Vielleicht meintest dui==WORD_LENGTH-1
für die if-Anweisung? - Sorry, das Programm ist für ein Spiel der Henker. Eine "falsche Vermutung" ist, wenn der Benutzer ahnt, ein Brief, der nicht Teil des Wortes. Denn es ist ein Spiel der Henker, bekommt man nur 6 falsche Vermutungen (um einen Gehenkten zeichnen Sie zuerst den Kopf(1), Leib(2), Arme(3 und 4), Beine (5 und 6)). Ein richtig denke, dann verfolgt die Anzahl der richtig errät, so dass, wenn der Benutzer richtig erraten alle Buchstaben, das Programm zu beenden, anstatt weiter zu Fragen, für eine andere denke. EDIT: JA, ich meinte ich==WORD_LENGTH-1.
- Auch diese wenn-Bedingung ist falsch, wenn(letterGuessed.equals(letterArray_value)) letterGuessed ist ein String, letterArray_value ist ein char so werden Sie nie gleich.
- Hinweis dieses bit: 'char-Wert = wordLetterArray[i]; String letterArray_value = String.valueOf(Wert);' Es wandelt das char-array die Werte in String-Werte
- wow, meine derp
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aussieht, müssen Sie möglicherweise die Neugestaltung des gesamten Algorithmus, aber ich kann Ihnen sagen, was Ihre Frage ist mit diese Schleife ewig:
Wieder, ich glaube, Sie müssen das Design Ihrer gesamten Algorithmus, aber wenn Sie wollen, dass es weiterhin, ziehen Sie einfach die incorrectGuess increment-Zeile aus der for-Schleife. Dies wird Ihnen das gewünschte Ergebnis: