2014-04-07 327 views
1

我已经替换了一个字符串,以便所有字母都显示为**,但是当我要求用户输入字符时,我似乎无法从字母中恢复字母。我会告诉你下面是我在我的代码所做的:替换一个字符串。

System.out.println(randomPirateWord.replaceAll("\\S", "*")); 
    System.out.println("guess a letter"); 
    char letterGuesed = input.findInLine(".").charAt(0); 
    System.out.println(randomPirateWord.replaceAll("\\S"+letterGuesed,"*")); 

回答

1

方法相反的方向replaceAll工作。首先是一个正则表达式,接下来是替换匹配,所以你用'*'来替换猜出的字母,这与你想要达到的目标是完全相反的。

0

我会用一个String保存您的hiddenWord,并在不同的功能只是显示的字符串的长度* s,则比较letterGuessedhiddenWord和更改*发回给hiddenWord的方式。

0

也许不是replace all,但这似乎工作:

import java.util.Scanner; 
class hola{ 
    public static void main(String args[]){ 
     Scanner sc = new Scanner(System.in); 
     String randomPirateWord = "HelloWorld"; 
     System.out.println(""); 
     boolean notComplete = true; 
     char words[] = new char[randomPirateWord.length()]; 
     char words2[] = new char[randomPirateWord.length()]; 
     for(int i = 0; i < randomPirateWord.length(); i++){ 
      words[i] = randomPirateWord.charAt(i); 
      words2[i] = '*'; 
     } 
     while(notComplete){ 
      System.out.print("Type a letter: "); 
      char letter = sc.next().charAt(0); 
      notComplete = false; 
      for(int i = 0; i < randomPirateWord.length(); i++){ 
       if(words[i] == letter){ 
        words2[i] = letter; 
       } 
      } 
      for(int i = 0; i < randomPirateWord.length(); i++){ 
       System.out.print(words2[i]); 
      } 
      for(int k = 0; k < randomPirateWord.length(); k++){ 
       if(words2[k] == '*'){ 
        notComplete = true; 
        break; 
       } 
      } 
      System.out.println(""); 
     } 
    } 
} 
+0

这个工作最好的,到目前为止,唯一的问题是我需要能够有它的空间,我需要能够输入另一个字母,这样如果用户输入h,它会显示为h * ll * *** l * – user228908

+0

当然,这是由您自己创建的......只是从用户输入中读取'letter',正如我所说 – Frakcool

+0

@ user228908确定检查新的编辑,它现在有效 – Frakcool