Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Java 替换字符串。_Java_String_Replace_Char - Fatal编程技术网

Java 替换字符串。

Java 替换字符串。,java,string,replace,char,Java,String,Replace,Char,我已经替换了一个字符串,这样所有的字母都显示为**。但是,当我要求用户输入字符时,我似乎无法将字母从*还原为字符串。我将在下面向您展示我在代码中所做的工作: System.out.println(randomPirateWord.replaceAll("\\S", "*")); System.out.println("guess a letter"); char letterGuesed = input.findInLine(".").charAt(0); Sys

我已经替换了一个字符串,这样所有的字母都显示为**。但是,当我要求用户输入字符时,我似乎无法将字母从*还原为字符串。我将在下面向您展示我在代码中所做的工作:

    System.out.println(randomPirateWord.replaceAll("\\S", "*"));
    System.out.println("guess a letter");
    char letterGuesed = input.findInLine(".").charAt(0);
    System.out.println(randomPirateWord.replaceAll("\\S"+letterGuesed,"*")); 

方法
replaceAll
的工作方向相反。首先是一个正则表达式,然后是match的替换,因此您将猜测的字母替换为“*”,这可能与您想要实现的相反。

我将使用一个
字符串来保存您的
隐藏字
,并在另一个函数中以
*
的形式显示字符串的长度,然后将猜出的
字母与
hiddenWord
进行比较,并将
*
更改回
hiddenWord

可能不使用
替换所有的
,但这似乎有效:

import java.util.Scanner;
class hola{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String randomPirateWord = "HelloWorld";
        System.out.println("");
        boolean notComplete = true;
        char words[] = new char[randomPirateWord.length()];
        char words2[] = new char[randomPirateWord.length()];
        for(int i = 0; i < randomPirateWord.length(); i++){
            words[i] = randomPirateWord.charAt(i);
            words2[i] = '*';
        }
        while(notComplete){
            System.out.print("Type a letter: ");
            char letter = sc.next().charAt(0);
            notComplete = false;
            for(int i = 0; i < randomPirateWord.length(); i++){
                if(words[i] == letter){
                    words2[i] = letter;
                }
            }
            for(int i = 0; i < randomPirateWord.length(); i++){
                System.out.print(words2[i]);
            }
            for(int k = 0; k < randomPirateWord.length(); k++){
                if(words2[k] == '*'){
                    notComplete = true;
                    break;
                }
            }
            System.out.println("");
        }
    }
}
import java.util.Scanner;
霍拉级{
公共静态void main(字符串参数[]){
扫描仪sc=新的扫描仪(System.in);
字符串randombiratieword=“HelloWorld”;
System.out.println(“”);
布尔值notComplete=true;
字符字[]=新字符[randomPirateWord.length()];
char words2[]=新字符[randombiratieWord.length()];
for(int i=0;i
这是目前为止效果最好的,唯一的问题是我需要能够在其中留出一个空间,并且我需要能够输入另一个字母,这样如果用户要输入h,它将显示为hll**lof当然,这是您自己制作的。。。只需从用户输入中读取
字母
,正如我所说,唯一的例外是:“单词之间没有空格”