我要做的是要求用户输入一个小写的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);
对不起,我之前没有提到这个,我是新的
答案 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数组。但它只是一个做基本工作的示例代码。 我将所有内容转换为小写但如果您想保留原始案例,请将其编辑。