2014-04-07 325 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