Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hangman Java-替换下划线_Java_Replace - Fatal编程技术网

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。你知道我怎么做吗?你不能用String
replace()
方法吗?看看。您需要从上一次找到的索引+1开始,否则您只是在一次又一次地重复相同的操作。另外,
newMask=…
行当前将整个mask替换为
短语(一个字母加倍),这可能不是您想要的。为什么需要在此处循环时执行此操作?如果要循环,请在函数
showLetter(stringletter)
上执行该操作,为什么它不会创建无限循环<代码>字母
在循环中始终相同。因此,
pos
不会被更改。那么控制将如何从循环中产生?不明白循环的用途是什么?循环的用途是用正确的字母替换所有必要的下划线。例如,因为字母是“结束得好的一切都好!”,所以如果我选择“e”,则表示“e”的所有下划线都将更改为e。你知道我怎么做吗?你不能用String
replace()
方法吗?看看。您需要从上一次找到的索引+1开始,否则您只是在一次又一次地重复相同的操作。另外,
newMask=…
行当前将整个mask替换为
短语(一个字母加倍),这可能不是您想要的。为什么需要在此处循环时执行此操作?如果要循环,请在函数
showLetter(字符串字母)