2014-01-21 111 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数组。但它只是一个基本工作的示例代码。 我将所有内容都转换为小写,但如果您想保留原始大小写,请将其编辑。