Hangman Java-替换下划线
我几乎完成了我的刽子手游戏,但我有一个问题,用这些字母替换正确猜测的字母的下划线。每当我选择正确的字母时,就会创建一个无限循环。非常感谢您的帮助 //公共字符串短语 //公共字符串新掩码Hangman Java-替换下划线,java,replace,Java,Replace,我几乎完成了我的刽子手游戏,但我有一个问题,用这些字母替换正确猜测的字母的下划线。每当我选择正确的字母时,就会创建一个无限循环。非常感谢您的帮助 //公共字符串短语 //公共字符串新掩码 public boolean showLetter(String letter) { phrase = phrase.toUpperCase(); int pos = phrase.indexOf(letter); if(pos != -1) { //If the letter is
public boolean showLetter(String letter)
{
phrase = phrase.toUpperCase();
int pos = phrase.indexOf(letter);
if(pos != -1) { //If the letter is part of the phrase.
do {
//Letter and phrase don't change.
//Cut the "a"
pos = phrase.indexOf(letter);
//Make a new string and take the digit out.
//I must break out of the loop.
//add code here
newMask = phrase.substring(0,pos)+phrase.charAt(pos)+phrase.substring(pos);
} while (pos != -1);
setValue(mask);
} else {
return false;
}
return true;
}
嘿,汤米,当你输入字母时,我做了类似的方法,它会检查它是否在短语字符串中,如果它在字符串中,它会返回true,并打印出新的掩码
static String phrase = "Word";
static String mask = "_ _ _ _";
public boolean showLetter(String letter)
{
phrase = phrase.toUpperCase();
for(int v =0; v < phrase.length();v++){
if(phrase.charAt(v) == letter.toUpperCase().charAt(0)){
String newMask = "";
mask =mask.replace(" ", "");
for(int vv = 0;vv < mask.length(); vv++){
if(vv == v){
newMask = newMask + letter.charAt(0) + " " ;
}else if (mask.charAt(vv) != '_'){
newMask = newMask +mask.charAt(vv) + " ";
}else{
newMask = newMask + "_ ";
}
}
mask = newMask;
return true;
}
}
return false;
}
静态字符串短语=“Word”;
静态字符串掩码=“\u0\u0\u0”;
公共布尔显示字母(字符串字母)
{
短语=短语.toUpperCase();
for(int v=0;v
输入:“w”
输出:True,“w”
如果不想打印输出,请将“/”放在System.out.println(掩码)前面 嘿,汤米,当你输入字母时,它会检查它是否在短语字符串中,如果在短语字符串中,它会返回true,并打印出新的掩码
static String phrase = "Word";
static String mask = "_ _ _ _";
public boolean showLetter(String letter)
{
phrase = phrase.toUpperCase();
for(int v =0; v < phrase.length();v++){
if(phrase.charAt(v) == letter.toUpperCase().charAt(0)){
String newMask = "";
mask =mask.replace(" ", "");
for(int vv = 0;vv < mask.length(); vv++){
if(vv == v){
newMask = newMask + letter.charAt(0) + " " ;
}else if (mask.charAt(vv) != '_'){
newMask = newMask +mask.charAt(vv) + " ";
}else{
newMask = newMask + "_ ";
}
}
mask = newMask;
return true;
}
}
return false;
}
静态字符串短语=“Word”;
静态字符串掩码=“\u0\u0\u0”;
公共布尔显示字母(字符串字母)
{
短语=短语.toUpperCase();
for(int v=0;v
输入:“w”
输出:True,“w”
如果不想打印输出,请将“/”放在System.out.println(掩码)前面 为什么它不会创建无限循环<代码>字母在循环中始终相同。因此,
pos
不会被更改。那么控制将如何从循环中产生?不明白循环的用途是什么?循环的用途是用正确的字母替换所有必要的下划线。例如,因为字母是“结束得好的一切都好!”,所以如果我选择“e”,则表示“e”的所有下划线都将更改为e。你知道我怎么做吗?你不能用Stringreplace()
方法吗?看看。您需要从上一次找到的索引+1开始,否则您只是在一次又一次地重复相同的操作。另外,newMask=…
行当前将整个mask替换为短语(一个字母加倍),这可能不是您想要的。为什么需要在此处循环时执行此操作?如果要循环,请在函数showLetter(stringletter)
上执行该操作,为什么它不会创建无限循环<代码>字母
在循环中始终相同。因此,pos
不会被更改。那么控制将如何从循环中产生?不明白循环的用途是什么?循环的用途是用正确的字母替换所有必要的下划线。例如,因为字母是“结束得好的一切都好!”,所以如果我选择“e”,则表示“e”的所有下划线都将更改为e。你知道我怎么做吗?你不能用Stringreplace()
方法吗?看看。您需要从上一次找到的索引+1开始,否则您只是在一次又一次地重复相同的操作。另外,newMask=…
行当前将整个mask替换为短语(一个字母加倍),这可能不是您想要的。为什么需要在此处循环时执行此操作?如果要循环,请在函数showLetter(字符串字母)