基本Java刽子手

基本Java刽子手,java,for-loop,while-loop,Java,For Loop,While Loop,我刚刚开始学习Java作为我的第一种编程语言 在课堂上,我们被分配使用while和for循环制作一个基本的刽子手游戏 到目前为止我拥有的 当用户输入第一个猜测时,它确实识别出他/她猜到的字符是正确的,但只是继续说我猜到了一个不正确的字母 非常感谢您的帮助!!我的问题是我在代码中做错了什么?我需要程序告诉用户他的猜测是对还是错 我的代码: import cs1.Keyboard; public class Hangman { public static void main(String

我刚刚开始学习Java作为我的第一种编程语言

在课堂上,我们被分配使用while和for循环制作一个基本的刽子手游戏

到目前为止我拥有的

当用户输入第一个猜测时,它确实识别出他/她猜到的字符是正确的,但只是继续说我猜到了一个不正确的字母


非常感谢您的帮助!!我的问题是我在代码中做错了什么?我需要程序告诉用户他的猜测是对还是错

我的代码:

import cs1.Keyboard;

public class Hangman {
    public static void main(String args[]) {
        int guessCount = 0;
        int correctGuess = 0;
        boolean foundIt;
        boolean solved;
        char guess, answer;
        String word;
            
        System.out.println("Welcome to HangMan!");
        System.out.println("Please enter a word for the opponent to guess!");
        word = Keyboard.readString();
        while (guessCount <= 6) {
            System.out.println("Please enter any letter A-Z as your guess!");
            guess = Keyboard.readChar();
            for (int i = 0; i < word.length(); i++) {
                if (guess == word.charAt(i)) {
                    System.out.println("You have guessed a correct letter!");
                    correctGuess++;
                    System.out.println("Correct Guess Count: "
                                        + correctGuess);
                    solved = false;
                }
                else if (guess != word.charAt(i)) {
                    System.out.println("Sorry! That is an incorrect guess! " 
                                       + "Please try again!");
                    guessCount++;
                    System.out.println("Guess Count: " + guessCount);
                    solved = false;
                }
            }
            if (correctGuess == word.length()) {
                solved = true;
                System.out.println("Congratulations! " + 
                                   "You have guessed the word!");
            }                   
        }
    }
}

每次完成响应时都需要询问用户输入以更新循环


您的变量猜测从未在循环中更新,这就是它运行到无限循环中的原因。您已经在循环中更新了guess变量。

您将
guess
字符串中的每个字符进行比较,然后显示每个字符的消息。相反,您应该编写一个方法,返回与输入匹配的字符数(这也处理具有重复字母的单词)。所以

然后你可以这样称呼它

guess = Keyboard.readChar();
int count = countOf(word, guess);
if (count > 0) {
  System.out.println("You have guessed a correct letter!");
  correctGuess += count;
} else {
  System.out.println("Sorry! That is an inncorrect guess! Please try again!");
}
guessCount++;
编辑无需使用第二种方法

guess = Keyboard.readChar();
int count = 0;
for (char c : in.toCharArray()) {
    if (c == guess) {
        count++;
    }
}
if (count > 0) {
  System.out.println("You have guessed a correct letter!");
  correctGuess += count;
} else {
  System.out.println("Sorry! That is an inncorrect guess! Please try again!");
}
guessCount++;
而且,既然你没有使用-

char[]chars=in.tocharray();
for(int i=0;i
好的,你的问题是什么?我的问题是我在代码中做错了什么?我需要程序告诉用户他的猜测是对还是错,而不仅仅是输出所有的废话。我已经对字符进行了研究,以确保我正确地使用了它,我想我是这样认为的:最简单的方法是再次要求用户输入循环中的字符,直到他们猜对了整个单词。那么这需要更多的循环吗?看,我还没有学过你提出一个全新方法的部分!看起来像是另一种我以前从未使用过的for循环。我将尝试合并并学习它!谢谢你真的不需要一个全新的方法。您应该能够通过包含在循环中的循环来实现这一点。你需要计算单词中有多少字母与输入的字母匹配,如果为零,则打印“猜错”消息。太好了!我只是查了一下toCharArray,这将非常有用,而且更有意义!!现在唯一的问题是sasy ch无法解析为一个变量,不确定这是否只是您刚才添加的填充,或者我是否缺少somthing://@NicLaQuatra Edited。是的,那应该是猜测。
guess = Keyboard.readChar();
int count = countOf(word, guess);
if (count > 0) {
  System.out.println("You have guessed a correct letter!");
  correctGuess += count;
} else {
  System.out.println("Sorry! That is an inncorrect guess! Please try again!");
}
guessCount++;
guess = Keyboard.readChar();
int count = 0;
for (char c : in.toCharArray()) {
    if (c == guess) {
        count++;
    }
}
if (count > 0) {
  System.out.println("You have guessed a correct letter!");
  correctGuess += count;
} else {
  System.out.println("Sorry! That is an inncorrect guess! Please try again!");
}
guessCount++;
char[] chars = in.toCharArray();
for (int i = 0; i < chars.length; i++) {
    if (chars[i] == guess) {
        count++;
    }
}