如何用char替换char?

时间:2014-01-21 20:28:32

标签: java replace

我要做的是要求用户输入一个小写的5个字母的单词。然后下一个窗口将有5个破折号,并要求用户输入一个字母。

如果字母与他们在开头输入的字符串中的一个字母匹配,则短划线将替换为字母。计算机将要求用户输入一个字母,直到用正确的字母替换所有短划线,并且每次输入正确的字母时,将显示剩余的破折号以及正确猜到的单词。

代表: 如果单词为"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);

对不起,我之前没有提到这个,我是新的

3 个答案:

答案 0 :(得分: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...

答案 1 :(得分:0)

你如何存储5个字符?这听起来像一个数组最简单的方法。那么你的问候你可以来自:

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

为:

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

答案 2 :(得分:0)

嗯,好的。

这是一个示例代码,可以执行您想要的操作。 它需要一个String(来自用户输入或插入字符串,编辑代码) 然后创建一个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数组。但它只是一个做基本工作的示例代码。 我将所有内容转换为小写但如果您想保留原始案例,请将其编辑。