我正在编写一个程序,如果有人键入以下两行:
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]
将替换字符串中的所有F
,Z
,G
和H
-您应使用FZGH
,因为这只会连续删除所有四个字母的实例。