我正在编写一个程序,如果有人键入以下两行:

HELLO,我想订购一个FZGH

儿童餐

程序将如下输出:

HELLO,我想订购儿童餐

换句话说,用户输入到句子中的“ FZGH”将替换为第二行的单词,如您所见:“ FZGH”被替换为“ KID'S MEAL”。金田明白我的意思吗?如果没有,我可以详细说明,但这是我能解释的最好的。

我真的很想解决这个问题!我目前的输出是:HELLO,我想订购FZGH儿童餐

我的程序没有用“儿童餐”代替“ FZGH”,我也不知道为什么。我以为通过使用.replaceAll()东西,它将用“ KID'S MEAL”代替“ FZGH”,但这并没有真正发生。到目前为止,这是我的程序:

public static void main(String[] args) {
    sentences();
}

public static void sentences() {
    Scanner console = new Scanner(System.in);
    String sentence1 = console.nextLine();
    String sentence2 = console.nextLine();
    //System.out.println(sentence1 + "\n" + sentence2);
    String word = sentence1.replaceAll("[FZGH]", "");
    word = sentence2;
    System.out.print(sentence1 + word);

}


我在哪里弄糟,导致FZGH仍出现在输出中?

最佳答案

采用

sentence1 = sentence1.replaceAll("FZGH", "");
String word = sentence2;


您的第一个(也是主要的)问题是要创建一个名为String的新word,并将其设置为sentence1.replaceAll("[FZGH]", "")的值。然后,您随后将word的值更改为sentence2,因此替换丢失。

相反,将sentence1设置为sentence1.replaceAll("FZGH", "");会将sentence1更改为不再包含字符串"FZGH",这正是您要使用的字符串。实际上,您根本不需要word值,因此,如果要删除它,则不会有任何伤害。

此外,使用[FZGH]将替换字符串中的所有FZGH-您应使用FZGH,因为这只会连续删除所有四个字母的实例。

09-30 21:51