1

1つのメイン文字列に基づいて黒または白の文字列にサブ文字列を追加するプログラムを作成しています。主な文字列は次のとおりです。ミルク、紙、カップ:、コーヒー、コーラ、PC

白い文字列の「:」の前のすべての文字と、黒い文字列の「:」の後のすべての文字をコードに配置したいと思います。

問題は、1人の魔女が「:」に接続されていることを除いて、すべてのアイテムが黒い文字列に追加されることです。したがって、この場合は「カップ」です。

これは私のコードです:

String White = "";
String Black = "";
String[] temp = "milk,paper,cup:,coffee,cola,PC".split(",");
int q = 0;
Boolean black = false;
while (q < temp.length) {
    if (temp[q].isEmpty()) {
    } else if (temp[q].contains(":")) {
        String tempWhite = White;
        White = tempWhite + temp[q].replace(":", "") + ",";
        black = true;

    } else if (black = true) {
        String tempBlack = Black;
        Black = tempBlack + temp[q] + ",";
    } else if (black = false) {
        String tempWhite = White;
        White = tempWhite + temp[q] + ",";
    } else if (temp[q].contains(" ")) {
    } else {
        System.out.println(temp[q]);

    }

    q++;
}
System.out.println("White: " + White);
System.out.println("Black: " + Black);

私が得る出力:白:カップ、黒:ミルク、紙、コーヒー、コーラ、PC、

欲しい出力:白:ミルク、紙、カップ黒:コーヒー、コーラ、PC

簡単にチェックできるようにスクリプトをコンパイル可能にしました:)

よろしくお願いします。

ブラム

4

7 に答える 7

5

最初は間違っているようです。最初splitに「:」を付けて、後で2つの部分を分析してみませんか。プログラムロジック全体が2〜3行のコードにまとめられます。

于 2012-08-20T12:08:01.810 に答える
3

どうですか

String[] pairs = "milk,paper,cup:,coffee,cola,PC".split(":");
String white = pairs[0];
String black = pairs[1].substring(1);

解決策のために。

于 2012-08-20T12:08:37.433 に答える
0

「:」で分割:[0]は白、[1]は黒になります。

それ以外の場合は、StringBuilder()を使用し、メソッド.append(..)を使用します

于 2012-08-20T12:09:35.950 に答える
0

「:」でメイン文字列を簡単に分割できます。

次に、黒い文字列から先頭の「、」を削除する必要があります

于 2012-08-20T12:12:07.367 に答える
0
  • まず、:で分割して、2つの文字列を取得します。1つは白い文字列用、もう1つは黒い文字列用です。
  • 次に、両方の文字列について、で分割して、それぞれの個別の項目を選択します。
  • (boolean = false)の代わりに(boolean == true)を使用します
于 2012-08-20T12:14:08.583 に答える
0

文字列の一部を作成する場合は、splitメソッドを使用できます。この方法で文字列を分割できます()。split( ":")と、文字列のペアを別の文字列変数に格納します。

于 2012-08-20T12:19:09.100 に答える
0

示されているコードが機能しない主な問題は、if条件での=、代入演算子の誤った使用法です(実際には、==、比較演算子を使用する必要がありますが、必要はありません。まったく比較してください-変数black自体はブール値であるため、条件として使用できます。例:

if (black)

黒が真の場合に何かを実行する、または

if (!black)

黒が現在値を保持しているかどうかを確認しますfalse

また、このコードでは注意してください

if (black) {
     doSomething();
} else if (!black) {
     doSomethingElse();
}

2番目のifステートメント(if (!black))は不要ですblack。2つの値しか持てません。それが真実でない場合、それは偽である可能性があります!したがって、上記と意味的に同等なものは次のようになります。

if (black) {
     doSomething();
} else {
     doSomethingElse();
}

直面している全体的な問題に対する読みやすい(保守性が高く、はるかに短い!)解決策については、最初にコロンで分割を使用します(他の回答ですでに述べたように)。

于 2012-08-20T12:19:36.197 に答える