Нужно исправить отладку кода, который показывает нольJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Нужно исправить отладку кода, который показывает ноль

Сообщение Anonymous »

Каждый раз, когда я запускаю код и они вводят «нет», он работает нормально. Но когда пользователь вводит «да», а затем пытается угадать букву из слова, которое он выбрал, и, например, если он ввел неправильную букву, отображается ноль, а он не должен показывать ноль. Это мой код:

Код: Выделить всё

public class Game {
private char[] guesses;
private int numGuesses;
private int numWrong;
private String secret;
private String display;

private static final String[] words = {"put", "word", "here"};

public Game() {
int index= (int) (Math.random() * words.length);
secret= words [index];
guesses = new char[26];
numGuesses=0;
numWrong=0;
display = "";
for (int i = 0; i < secret.length(); i++) {
display += "-";
}
}

public Game(String word) {
secret=word;
guesses = new char[26];
numGuesses=0;
numWrong=0;
for (int i = 0; i < secret.length(); i++) {
display += "-";
}
}

public boolean guess(char letter) {
for(int i=0; i< numGuesses; i++) {
if (guesses[i] == letter) {
return false;
}
}

boolean correct = false;
String newDisplay = "";

for (int i = 0; i < secret.length(); i++) {
if(secret.charAt(i) == letter ) {
newDisplay += letter;
correct = true;
} else {
newDisplay += display.charAt(i);
}
}

display = newDisplay;

if (!correct) {
numWrong++;
}
guesses [numGuesses++] = letter;

return correct;

}
public String getWord() {
return secret;
}
public String getGuesses() {
String allGuesses = "";
for (int i = 0; i < numGuesses; i++){
allGuesses += guesses[i];
}
return allGuesses;
}

public boolean gameOver() {
return numWrong >= 7 || isWordGuess();
}

private boolean isWordGuess() {
for (int i = 0; i < secret.length(); i++) {
if (display.charAt(i) == '-') {
return false;
}
}
return true;
}

@Override
public String toString() {
String ret = "";

if (this.numWrong == 0) {
ret +=
" ______\n"+
" |\n"+
" |\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 1) {
ret +=
" ______\n"+
" |    O\n"+
" |\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 2) {
ret +=
" ______\n"+
" |    O\n"+
" |    |\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 3) {
ret +=
" ______\n"+
" |    O\n"+
" |   /|\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 4) {
ret +=
" ______\n"+
" |    O\n"+
" |   /|\\\n"+
" |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 5) {
ret +=
" ______\n"+
" |    O\n"+
" |   /|\\\n"+
" |    |\n"+
" |\n"+
" |\n"+
" ______\n";
} else if (this.numWrong == 6) {
ret +=
"YOU LOSE! \n"+
" ______\n"+
" |    O\n"+
" |   /|\\\n"+
" |    |\n"+
" |   /\n"+
" |\n"+
" ______\n";
} else  {
ret +=
" YOU LOSE!\n"+
" ______\n"+
" |    O\n"+
" |   /|\\\n"+
" |    |\n"+
" |   / \\\n"+
" |\n"+
" ______\n";
}

ret += " You have guessed these letters: "  + getGuesses() + "\n";
ret += "Secret word: " + display + "\n";

if (isWordGuess()) {
ret += "YOU WIN!!";

}
return ret;
}

секретное слово — яблоко, и как только я ввел букву, которой нет в слове, оно показывает это
обычно в коде должны отображаться только тире и добавляться к палачу, если они ошиблись с буквой, но я не знаю, где мой код ошибся:(
Я бы очень ценю помощь. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... owing-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»