Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 刽子手计划(重复字母)_Java_Arrays_Methods_Java.util.scanner - Fatal编程技术网

Java 刽子手计划(重复字母)

Java 刽子手计划(重复字母),java,arrays,methods,java.util.scanner,Java,Arrays,Methods,Java.util.scanner,好的,我在编程课上做了一个练习,我们被要求做一个绞刑人游戏,你可以看到。所有的程序都运行良好,除了一件事:当一个单词的字母重复了不止一次时,程序只接受一次,然后忽略其他单词。我认为问题出在setLetter方法中。它的工作是用字母替换破折号。当我第二次运行程序并输入字母时,它确实告诉我这是一个正确的猜测,但它不会用字母替换破折号 任何帮助都将不胜感激! 多谢各位 import java.util.Random; import java.util.Scanner; public class Ha

好的,我在编程课上做了一个练习,我们被要求做一个绞刑人游戏,你可以看到。所有的程序都运行良好,除了一件事:当一个单词的字母重复了不止一次时,程序只接受一次,然后忽略其他单词。我认为问题出在setLetter方法中。它的工作是用字母替换破折号。当我第二次运行程序并输入字母时,它确实告诉我这是一个正确的猜测,但它不会用字母替换破折号

任何帮助都将不胜感激! 多谢各位

import java.util.Random;
import java.util.Scanner;

public class Hangman {  

public static void main(String [] args) {

    // word list
    String [] hangmanList = {"accelerate", "achieve", "able", "microscope", 
            "thumb", "wonderful", "yard", "wood", "lemon", "favorite", "decide", "circular", 
            "broke", "elephant", "funny", "hamburger", "leg", "job", "lighthouse", "mother", 
            "notebook", "puzzle"};



    int allowedGuesses = 7;  

    String secretWord=pickRandomWord(hangmanList);        
    System.out.println(secretWord);

    char[] correctGuesses = new char [secretWord.length()];      


    for (int i=0; i<correctGuesses.length;i++){
        correctGuesses[i]= '-';
    }


    char [] incorrectGuesses= new char [20]; 



    int mistakeCount = 0;
    Scanner input = new Scanner(System.in); 



    for (int i=0; mistakeCount<allowedGuesses;i++){
        if (checkWinner(correctGuesses)!=true){

        printGallows(mistakeCount); 

        System.out.println("\n ");

        for (int j=0;j<correctGuesses.length;j++){
            System.out.print(correctGuesses[j]);
        }

        System.out.print("\nWrong guesses: ");
        for (int j=0;j<=i;j++){
            System.out.print(incorrectGuesses[j]);
        }


        System.out.print("\nPlease guess a letter: ");
        char a = input.next().charAt(0);; 


        boolean letterFound = false;         
        letterFound = matchFound(a,secretWord); 


        if (letterFound) {

           setLetter(a ,secretWord, correctGuesses); 
           System.out.println("-== correct guess! ==-");
        }
        else {

           incorrectGuesses[i]=a;

           mistakeCount++; 

           System.out.println(":(:(:( Oops! that is incorrect...");
        }   

    }
        else break; 

    }



    System.out.println("\n********************************************");
    System.out.println("The secret word was: " + secretWord);

    if (checkWinner(correctGuesses)) {
        System.out.println("Congratulations, you won!");
    } 
    else {
        System.out.println("Better luck next time!!!");
        printGallows(mistakeCount);             
    }


}       


private static boolean checkWinner(char[] correctGuesses) {
    boolean isWinner=false;

    for (int i=0; i<correctGuesses.length;i++){
        if (correctGuesses[i]!= '-') isWinner=true;
        else isWinner=false; 
    }

    return isWinner;
}


public static boolean matchFound(char guess,String secretWord) {
    char [] letters = secretWord.toCharArray(); 
    for (int i=0; i<letters.length;i++){

        if (guess == letters[i]) {
            return true ;
        }
    }
    return false;        
}


public static boolean setLetter(char guess,String secretWord, char[] correctGuesses) {

    char [] letters = secretWord.toCharArray(); 
    int guessed=0; 
    for (int i=0;i<letters.length;i++){

        if (guess==letters[i]){
            guessed++; 
        }

        if (guessed>0){
            correctGuesses[i]=letters[i]; 
            return true; 
        }

        else if (guess==0){
            correctGuesses[i]=letters[i]; 
            return true; 
        }
    }

    return false;        
}



private static void printGallows(int mistakeCount) {

    if (mistakeCount==0){
        System.out.print("  ____\n  |  |\n  |\n  |\n  |\n  |\n  |\n  |\n__|__"); }

          else if (mistakeCount==1){
          System.out.print("  ____\n  |  |\n  |  O\n  |\n  |\n  |\n  |\n  |\n__|__"); }

          else if (mistakeCount==2){
          System.out.print("  ____\n  |  |\n  |  O\n  |  |\n  |\n  |\n  |\n  |\n__|__");}

          else if (mistakeCount==3){
          System.out.print("  ____\n  |  |\n  |  O\n  |  |\n  | \\|\n  |\n  |\n  |\n__|__");}

          else if (mistakeCount==4){
          System.out.print("  ____\n  |  |\n  |  O\n  |  |\n  | \\|/\n  |\n  |\n  |\n__|__");}

          else if (mistakeCount==5){
          System.out.print("  ____\n  |  |\n  |  O\n  |  |\n  | \\|/\n  |  |\n  |\n  |\n__|__");}

          else if (mistakeCount==6){
          System.out.print("  ____\n  |  |\n  |  O\n  |  |\n  | \\|/\n  |  |\n  | /\n  |\n__|__");}

          else if (mistakeCount==7){
          System.out.print("  ____\n  |  |\n  |  O\n  |  |\n  | \\|/\n  |  |\n  | / \\ \n  |\n__|__");}

}


private static String pickRandomWord(String[] dictionary){
    String secretWord=null;

    Random r = new Random (); 

    secretWord = dictionary [r.nextInt(dictionary.length)];     

    return secretWord;
}

}   // end of Hangman class
import java.util.Random;
导入java.util.Scanner;
公共级刽子手{
公共静态void main(字符串[]args){
//词表
字符串[]hangmanList={“加速”、“实现”、“能够”、“显微镜”,
“拇指”、“美妙”、“院子”、“木头”、“柠檬”、“最爱”、“决定”、“圆形”,
“破产”、“大象”、“搞笑”、“汉堡”、“腿”、“工作”、“灯塔”、“母亲”,
“笔记本”,“拼图”};
int Allowequesses=7;
字符串secretWord=pickronomword(hangmanList);
System.out.println(secretWord);
char[]correctGuesses=新字符[secretWord.length()];

对于(int i=0;i是,问题在于setLetter方法。在第一个字母匹配时返回true。我的解决方案是

    public static boolean setLetter(char guess, String secretWord, char[] correctGuesses) {

    char[] letters = secretWord.toCharArray();
    int guessed = 0;
    for (int i = 0; i < letters.length; i++) {
        if (guess == letters[i]) {
            guessed++;
            correctGuesses[i] = letters[i];
        }
    }

    return guessed != 0;
}
public静态布尔setLetter(字符猜测、字符串secretWord、字符[]更正猜测){
char[]字母=secretWord.toCharArray();
int猜测=0;
for(int i=0;i