【发布时间】:2024-10-21 01:50:01
【问题描述】:
我是 Java 编程的新手,一直在研究某种刽子手“游戏”。这是我的导师提出的一个练习,在完成基本版本后,我想做一个更高级的练习。到目前为止,我发现代码中的问题是 if 语句和 else if 语句都运行。为了解决这个问题,我添加了一些中断语句。它确实有助于解决一个问题,但两个语句仍然运行。
这是错误的 if else 语句:
if (guess.equals(letters[i])){
wordi[i] = guess.charAt(i);
System.out.println("Included");
break;
}
else if (!guess.equals(letters[i])){
wordi[i] = '*';
wrong_guess++;
num_guess ++;
System.out.println("Not included");
break;
如果有帮助,这里是完整的代码:
import java.util.Scanner;
public class Test {
public static Scanner input = new Scanner(System.in);
@SuppressWarnings({ "unused" })
public static void main(String[] args) {
String[] words = new String[10];
words[0] = "chair";
words[1] = "apple";
words[2] = "bear";
words[3] = "word";
words[4] = "table";
words[5] = "cow";
words[6] = "cabbage";
words[7] = "food";
words[8] = "computer";
words[9] = "mouse";
int cap_guess = 6;
int wrong_guess = 0;
int n = (int)(Math.random()*10);
String word = words[n];
String out_word = "";
int num_guess = 1;
for(int count = 0; count < word.length(); count ++){
out_word += "*";
}
boolean success = false;
String guess = "";
String[] letters = new String[word.length()];
for (int i = 0; i < letters.length; i++){
letters[i] = word.substring(i,i+1);
System.out.println(letters[i]);
}
while (num_guess <= cap_guess){
display(wrong_guess);
System.out.println(out_word);
System.out.print("Enter a guess: ");
guess = input.nextLine();
guess = guess.trim();
guess = guess.toLowerCase();
System.out.println("Guess: " + guess);
char[] wordi = out_word.toCharArray();
if (guess.length() == 1){
for (int i = 0; i < word.length(); i++){
if (guess.equals(letters[i])){
wordi[i] = guess.charAt(i);
System.out.println("Included");
break;
}
else if (!guess.equals(letters[i])){
wordi[i] = '*';
wrong_guess++;
num_guess ++;
System.out.println("Not included");
break;
}
}
out_word += wordi;
}
}
/*System.out.println(word);
System.out.println(out_word);*/
}
public static void display (int wrong_guess){
if (wrong_guess == 0){
System.out.println("_____________________");
System.out.println(" *----------, |");
System.out.println(" | | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println("______________/-\\____|");
System.out.println("");
}
if (wrong_guess == 1){
System.out.println("_____________________");
System.out.println(" *----------, |");
System.out.println(" | | |");
System.out.println(" /=\\ | |");
System.out.println(" |. .| | |");
System.out.println(" \\-/ | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println("______________/-\\____|");
System.out.println("");
}
if (wrong_guess == 2){
System.out.println("_____________________");
System.out.println(" *----------, |");
System.out.println(" | | |");
System.out.println(" /=\\ | |");
System.out.println(" |. .| | |");
System.out.println(" \\-/ | |");
System.out.println(" | | |");
System.out.println(" | | |");
System.out.println(" | | |");
System.out.println(" | | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println("______________/-\\____|");
System.out.println("");
}
if (wrong_guess == 3){
System.out.println("_____________________");
System.out.println(" *----------, |");
System.out.println(" | | |");
System.out.println(" /=\\ | |");
System.out.println(" |. .| | |");
System.out.println(" \\-/ | |");
System.out.println(" | | |");
System.out.println(" |\\ | |");
System.out.println(" | \\ | |");
System.out.println(" | | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println("______________/-\\____|");
System.out.println("");
}
if (wrong_guess == 4){
System.out.println("_____________________");
System.out.println(" *----------, |");
System.out.println(" | | |");
System.out.println(" /=\\ | |");
System.out.println(" |. .| | |");
System.out.println(" \\-/ | |");
System.out.println(" | | |");
System.out.println(" /|\\ | |");
System.out.println(" / | \\ | |");
System.out.println(" | | |");
System.out.println(" | |");
System.out.println(" | |");
System.out.println("______________/-\\____|");
System.out.println("");
}
if (wrong_guess == 5){
System.out.println("_____________________");
System.out.println(" *----------, |");
System.out.println(" | | |");
System.out.println(" /=\\ | |");
System.out.println(" |. .| | |");
System.out.println(" \\-/ | |");
System.out.println(" | | |");
System.out.println(" /|\\ | |");
System.out.println(" / | \\ | |");
System.out.println(" | | |");
System.out.println(" / | |");
System.out.println(" / | |");
System.out.println("______________/-\\____|");
System.out.println("");
}
if (wrong_guess == 6){
System.out.println("_____________________");
System.out.println(" *----------, |");
System.out.println(" | | |");
System.out.println(" /=\\ | |");
System.out.println(" |x x| | |");
System.out.println(" \\-/ | |");
System.out.println(" | | |");
System.out.println(" /|\\ | |");
System.out.println(" / | \\ | |");
System.out.println(" | | |");
System.out.println(" / \\ | |");
System.out.println(" / \\ | |");
System.out.println("______________/-\\____|");
System.out.println("");
}
}
}
提前感谢您的帮助。
【问题讨论】:
-
我不相信它们都运行,至少在循环的同一迭代中。根据语言规范,他们根本做不到。
-
请注意,
else if (!guess.equals(letters[i])){可以更轻松地写成else {。 -
你为什么要打破?
-
另外你也不需要在 if {} 块的末尾打断
-
我和@AndyTurner 一起做这个。它同时运行,但不是在同一循环中运行。
标签: java if-statement