0

string tokenizer の代わりにスキャナーを使用しました。以下はコードの一部です...

Scanner scanner =  new Scanner("Home,1;Cell,2;Work,3");
scanner.useDelimiter(";");
while (scanner.hasNext()) {
    // System.out.println(scanner.next());
    String phoneDtls = scanner.next();

    // System.out.println(phoneDtls);
    ArrayList<String> phoneTypeList = new ArrayList<String>();
    if(phoneDtls.indexOf(',')!=-1) {

        String value = phoneDtls.substring(0, phoneDtls.indexOf(','));

        phoneTypeList.add(value);

    }

    Iterator itr=phoneTypeList.iterator();
    while(itr.hasNext())
        System.out.println(itr.next());
}

これを実行すると得られる出力... Home Cell Work

上記のコードからわかるように、配列リスト phoneTypeList に最終的に値を格納しています..しかし、「,」に基づいて値を見つけるロジックはそれほど優れていません..つまり..

if(phoneDtls.indexOf(',')!=-1) {
    String value = phoneDtls.substring(0, phoneDtls.indexOf(','));
    phoneTypeList.add(value);
}

他の代替案を教えてください..!! 同じことを達成するために...!!事前にどうもありがとう..!!

4

4 に答える 4

2

それを行う別の方法があるかどうかを尋ねたので、ここに代替手段があります。文字列を直接分割し、foreachステートメントを使用してより少ないコードで実行できます。

String input = "Home,1;Cell,2;Work,3";

String[] splitInput = input.split(";");

for (String s : splitInput ) {

    System.out.println(s.split(",")[0]);

}

ArrayList<T>配列を反復処理することもできるため、を使用する必要はありません。

于 2012-04-08T06:41:53.167 に答える
1

',' STIRNG_VALUE.split(','); に基づいて分割してみてください。u で区切られた文字列の配列を返します。これが役立つかもしれません

于 2012-04-08T06:37:53.023 に答える
1

私が正しく理解していれば。問題のステートメントは、Phone-Type-List のリストを維持したいということです。このように: [「自宅」、「セル」、「職場」]。

これをプロパティファイル/構成ファイル/データベースに保持し、アプリの起動時にメモリにロードすることをお勧めします。

入力を変更できない場合、アルゴリズムに関しては、より良いものを考えられませんでした。いいね。

それが理にかなっている場合は、文字列の分割関数を使用できます。最初に「;」で分割を使用します 次に、「、」の分割

于 2012-04-08T06:38:10.060 に答える
1
declare the arraylist outside the while loop.

これを試してみてください。パフォーマンスを向上させるためにいくつかの変更も加えました。比較して変化を理解していただければ幸いです。

    ArrayList<String> phoneTypeList = new ArrayList<String>();
    Scanner scanner = new Scanner("Home,1;Cell,2;Work,3");
    scanner.useDelimiter(";");
    String phoneDtls = null;
    String value = null;
    while (scanner.hasNext()) {
        phoneDtls = scanner.next();
        if (phoneDtls.indexOf(',') != -1) {
            value = phoneDtls.split(",")[0];
            phoneTypeList.add(value);
        }
    }

    Iterator itr = phoneTypeList.iterator();
    while (itr.hasNext())
        System.out.println(itr.next());

実行して結果が得られました。スクリーンショットを確認してください。

ここに画像の説明を入力

于 2012-04-08T06:40:34.650 に答える