0

ストリームを読み取る必要があります。このストリームは、バッファリングされたリーダーを使用して文字列に変換しています。このストリームを読みながら、いくつかの特定のキーワードについて、特定のメッセージを伝える必要があります。例: ストリームの読み取り中に「ネットワーク エラー」が見つかった場合は、「接続にエラーがあります」と表示する必要があります。

しかし、私の問題は、その特定のキーワードが 1000 個ある場合、1000 個の「if」条件を書かなければならないことです。

キーで参照する必要があるため、プロパティファイルを管理できないと思います。「ネットワークエラー」のような言葉ではありません。

if 条件なしでこれを実装する適切な方法はありますか。

返事してください

4

2 に答える 2

1

プロパティファイルは必要ありません。のみでこれを処理できますEnumeration, HashMap。あなたができることは、最初enumにすべてのキーワードと特定のメッセージを値に作成することです。列挙型と置換する値を含むマップを用意します。キーワードを反復処理し、それらがストリームに含まれている場合はそれらを置き換えます。

これがあなたを助けることができるサンプルコードです。

KeyWordEnum.java

public enum KeyWordEnum{

NETWORK_ERROR;

public String toString(){
  if(NETWORK_ERROR){
    return "Network Error";
  }
}
}

ここで、Test.javaクラスで:

public String getReplacedStream(String stream){
Map<KeyWordEnum, String> keyWordMapWithValue = new HashMap<KeyWordEnum String>();
keyWordMapWithValue.put(KeyWordEnum.NETWORK_ERROR,"There is an error in connection");

// Replace all the keywords from the map.

  for(KeyWordEnum key : keyWordMapWithValue.keySet()){
    if(stream.contains(key.toString())){
       stream.replaceAll(key.toString(), key.getValue());

    }
  }
  return stream;
}
于 2013-06-23T08:39:35.377 に答える
0

HashMap<String,String>キーを key_words として、値を specific_message として使用できます。

于 2013-06-23T07:24:18.463 に答える