Java的替代的特定字符(Java replacement of specific characte

2019-08-02 14:50发布

这是我在这个网站的第一个问题,所以我会尽量不成为一个总的小白..

我目前使用Java创建刽子手游戏。 所以我想问你的是,如果我们得到一个字“鬼”鬼被替换为“_”,

hiddenWord = ghost.length();
for (i=0; i < ghost.lenth(); i ++)
System.out.print("_ ")

给我们的输出

“_ _ _ _ _”

比方说,我们猜字母“O”字母“o”的猜测,我如何更换`

"_ _ _ _ _" with 
"_ _ o _ _ "

我目前的类文件

public void pickWord()
    {
        String[] listOfWords;
        listOfWords = new String[10];
        listOfWords[0] = "shenanigans";
        listOfWords[1] = "conversely";
        listOfWords[2] = "octopus";
        listOfWords[3] = "dizzy";
        listOfWords[4] = "malicious";
        listOfWords[5] = "goosebumps";
        listOfWords[6] = "flying";
        listOfWords[7] = "staff";
        listOfWords[8] = "xylophone";
        listOfWords[9] = "zapping";
        Random generator = new Random();
        int lineNumber = generator.nextInt(9);
        disguisedWord = listOfWords[lineNumber];


    }   
    public void displayMark()
    {
        for( int i = 0; i < disguisedWord.length(); i ++)
            underscore = underscore + "_ ";
        System.out.println(underscore);

    }
    public void makeGuess() throws IOException
    {
        System.out.println("Your word is " + disguisedWord.length() + " letters long.");
        System.out.println("Feel free to guess a letter.");
        guess = (char)System.in.read();

Answer 1:

String ghost = "ghost";
String input = "o";
for (int i = 0; i < ghost.length(); i++) {
    if (String.valueOf(ghost.charAt(i)).equalsIgnoreCase(input)) {
        System.out.print(input + " ");
    } else {
        System.out.print("_ ");
    }
}

您可以使用简化的三元运算符if语句:

System.out.print(String.valueOf(ghost.charAt(i)).equalsIgnoreCase(input) ? input + " " : "_ ");


Answer 2:

为什么不标志着什么字母都被猜测和是什么字母还是个未知数真/假值的另一个数组? 我不认为使用正则表达式和字符串替换为一个简单的方法去获得刽子手的工作,尤其是当他们猜测的另一封信。

像这样的事情也许。

String answer = "someword";
boolean[] knownLetters = new boolean[answer.length()];
for (int i = 0; i < answer.length(); i++) {
    if(knownLetters[i]) {
        System.out.print(answer.charAt(i));
    } else {
        System.out.print("_");
    }
}
System.out.println("");


Answer 3:

要做到这一点最简单的方法是使用目标字一个Java正则表达式。 因此,只要用户在信你寻找一个正则表达式匹配的那封信。 那场比赛会给你回匹配字符,然后您可以用它来替换字母的指数__字符串的版本。

...    
    listOfWords[9] = "zapping";
    Random generator = new Random();
    int lineNumber = generator.nextInt(9);
    disguisedWord = listOfWords[lineNumber];
    char[] hidden = disguisedWord.replaceAll("*","_").toCharArray();
}

public void makeGuess() throws IOException {
    System.out.println("Your word is " + disguisedWord.length() + " letters long.");
    System.out.println("Feel free to guess a letter.");
    String guess = System.in.read();

    Pattern pat = new Pattern(guess);
    Matcher mat = pat.matcher(disguisedWord);
    while (mat.find()) {
        int start = mat.start();
        hidden[start] = guess.toCharArray()[0];
    }
}


Answer 4:

我认为最简单的方法就是在一个变量来存储状态,并通过循环在现实世界中替换匹配的字符。

private String word; 
private char[] state;

public void guess(char input){
    for (int i = 0; i < word.length(); i++) {
        if (word.toLowerCase().charAt(i) == input){
            state[i] = word.charAt(i);
        }
    }
}

事后你可以打印“状态”的内容。



文章来源: Java replacement of specific characters