0

私は誰かが次の2行を入力した場合にプログラムを書いています:

こんにちは、FZGHを注文したいです

キッズミール

プログラムは次のように出力します。

こんにちは、子供の食事を注文したいです

つまり、ユーザーが文に入力した「FZGH」は、ご覧のとおり2行目の単語に置き換えられます。「FZGH」は「KID'SMEAL」に置き換えられます。ちょっと私が言っていることを理解しますか?そうでなければ、私はもっと詳しく説明することができますが、これは私がそれを説明できる最高のものです。

私はこれを解決するのに本当に近いです!私の現在の出力は次のとおりです。こんにちは、FZGHキッズミールを注文したいです

私のプログラムでは、「FZGH」が「KID'S MEAL」に置き換えられていませんでしたが、その理由はわかりません。.replaceAll()を使用すると、「FZGH」が「KID'S MEAL」に置き換わると思いましたが、実際にはそうではありませんでした。これまでの私のプログラムは次のとおりです。

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が出力に表示されたままになりましたか?

4

4 に答える 4

1

使用する

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

最初の(そして主要な)問題は、の値に設定している新しいString名前のを作成していることです。次に、の値を直後に変更するため、置換は失われます。wordsentence1.replaceAll("[FZGH]", "")wordsentence2

代わりに、に設定sentence1するsentence1.replaceAll("FZGH", "");sentence1、文字列が含まれなくなります"FZGH"。これは、目的の文字列です。実際には値はまったく必要ないwordので、削除したい場合でも問題はありません。

さらに、を使用すると、文字列からすべての「s」、「s」、「s」、および「s」[FZGH]が置き換えられます。代わりに使用する必要があります。これにより、連続する4文字すべてのインスタンスのみが削除されます。FZGHFZGH

于 2012-12-13T04:49:29.800 に答える
1

いくつか間違いがあると思います。多分以下は近いです...

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();
    String sentence3 = sentence1+sentence2;
    String final = sentence3.replaceAll("FZGH", "");
    System.out.print(final);
}
于 2012-12-13T04:56:39.867 に答える
0

文字列「word」を再割り当てしています

行の代わりに:

String word = sentence1.replaceAll("[FZGH]", "");
word = sentence2;
System.out.print(sentence1 + word);

次の行を使用します

sentence1 = sentence1.replaceAll("[FZGH]", "");
System.out.print(sentence1 + sentence2);
于 2012-12-13T04:53:05.707 に答える
0

実際にreplaceメソッドは、sentence1に再度割り当てる必要のある文字列を返します。このコードを実行すると、正常に機能します。public static void main(String [] args){文(); }

public static void sentences() {
        Scanner console = new Scanner(System.in);
        String sentence1 = "HELLO, I’D LIKE TO ORDER A FZGH";
        String sentence2 = "KID’S MEAL";
        //System.out.println(sentence1 + "\n" + sentence2);
         sentence1 = sentence1.replace("FZGH", "");
       String word = sentence2;
        System.out.print(sentence1 + word);

    }
于 2012-12-13T05:05:22.390 に答える