2014-01-21 103 views
-3

我想要做的是要求用戶輸入一個小寫5個字母的單詞。然後下一個窗口將有5個破折號,並要求用戶輸入一個字母。如何用char替換char?

如果這個字母與他們在開頭輸入的字符串中的一個字母匹配,破折號將被替換爲字母。計算機會要求用戶輸入一個字母,直到所有的破折號用正確的字母替換,並且每當他們輸入正確的字母時,剩餘的破折號以及正確猜測的字就會出現。

例如: 如果單詞是"hello",窗口將顯示爲" _ _ _ _ _"。當我輸入"h"時,窗口將顯示爲"h _ _ _ _"。然後計算機會要求我輸入另一個字母,然後輸入"l",窗口將顯示:"h _ l l _"

這是我到目前爲止有:

String word; 
    do{ 
     word = JOptionPane.showInputDialog("Enter a 5 letter lowercase word"); 
    }while(word.length()!=5); 
    String blanks = "_____"; 
    char letter = JOptionPane.showInputDialog(blanks).charAt(0); 
    for(int a=0;a<=5;a++){ 
     char blankReplace; 
     if(word.charAt(a)==letter){ 
      blankReplace = letter; 
     } 
     letter = JOptionPane.showInputDialog(blanks).charAt(0); 

對不起我沒有包括這早些時候,我是新

+4

ok向我們展示喲代碼到目前爲止? – Coffee

+0

你想讓我們爲你編碼? – Dima

+0

StringBuilder?姆姆,但你仍然需要做一些工作,讓一切工作..你應該有任何存儲的原始字符串,並檢查它和blablabla。嘗試一些你可以得到的想法。 –

回答

0

您可以在字存儲在一個數組,並使用另一個數組作爲屏蔽詞。然後獲取用戶輸入並循環訪問數組以在發現時替換字母。像這樣:

char word[] = "qwert".toCharArray(); 
char mask[] = "_____".toCharArray();  
char input = getUserInput(); //made up method, of course... 

for(int i = 0; i < word.length; i++) { 
    if(word[i] == input) { 
     mask[i] = input; 
    } 
} 
//repeat until solved, use a counter or something... 
0

你怎麼存儲你的5個字符?這聽起來像是一個數組最簡單的方法。然後你打招呼例如,你可以去來源:

array[0] = '_'; 
array[1] = '_'; 
array[2] = '_'; 
array[3] = '_'; 
array[4] = '_'; 

到:

array[0] = 'h'; 
array[1] = '_'; 
array[2] = '_'; 
array[3] = '_'; 
array[4] = '_'; 
0

嗯,好的。

這是一個示例代碼,應該做你想做的。 它需要一個字符串(從用戶輸入或你插​​入的字符串,編輯代碼) 然後創建一個StringBuilder,它將包含新的字符串與「_」 它適用於任何字符串(或應該,我測試一些情況下) 。

package com.abacus.carnevalevenezia; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     String originalWord = "Hello You".toLowerCase(); 
     StringBuilder currentWork = new StringBuilder(originalWord.length()); 

     for (int i = 0; i < originalWord.length(); ++i) 
      if (originalWord.charAt(i) != ' ') 
       currentWork.append("_"); 
      else 
       currentWork.append(" "); 

     System.out.println("Word: " + currentWork.toString()); 

     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 
     do 
     { 
      try 
      { 
       char temp = Character.toLowerCase(bufferedReader.readLine().charAt(0)); 

       // Search for all positions 
       int idx = 0; 
       int lastIDX = 0; 

       while ((idx = originalWord.indexOf(temp, lastIDX)) != -1) 
       { 
        currentWork.replace(idx, idx + 1, Character.toString(temp)); 

        lastIDX = idx + 1; 
       } 

       if (originalWord.equals(currentWork.toString())) 
       { 
        System.out.println("You win (" + originalWord + ")."); 
        break; 
       } 
       else 
       { 
        System.out.println("Word: " + currentWork.toString()); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } while (true); 
    } 
} 

你也可以使用char數組。但它只是一個基本工作的示例代碼。 我將所有內容都轉換爲小寫,但如果您想保留原始大小寫,請將其編輯。