0

これは、このスレッドからの私の質問の続きです

    String[] words = {"cowboy", "animal", "monster"};
    String[] meanings = {"meaning1", "meaning2", "meaning3"};

    boolean check = false;

    for (int i = 0; i < words.length; i++) {
    if (s.toLowerCase().contains(words[i].toLowerCase())) {
        check = true;
    } else {

    }
    }
   if (check) {
   System.out.println("Yes");
   } else {
   System.out.println("No");
   }

しかし、ユーザーが編集テキストに入力した各単語の特定の意味をどこにどのように配置するかがわかりません。どんな助けでも喜んでいただければ幸いです。ありがとう。

4

7 に答える 7

1

単語と意味の配列には相対インデックスがあるため、次のことができます-

boolean check = false;

for (int i = 0; i < words.length; i++) {

    if (s.equalsIgnoreCase(words[i])) { // We don't need "toLowerCase"

        System.out.println("Word: " + words[i] + "\tMeaning: " + meanings[i]);
        check  = true;
        break; // Match found; so get out of the loop

    }
}

if(check){
    System.out.println("Found!");
} else {
    System.out.println("Not Found!");
}
于 2013-08-25T19:01:49.610 に答える
1

もう 1 つのアイデアは、HashMap を使用してデータを保存することです。

HashMap hm = new HashMap();
hm.put("cowboy", "meaning1");
hm.put("animal", "meaning2");

そして、使用します

String s = yourEdittext.getText();
String[] words = s.split("\s+");

for (int i = 0; i < words.length(); i++) {
  words[i] = words[i].replaceAll("[^\w]", "");
}

for (int i=0; i < words.length(); i++) {
  if (hm.containsKey(words[i])) {
    System.out.println("Meaning found: " + hm.get(words[i]));
  }
}

これは基本的に、編集テキストからセンテンスを取得し、それを単語に分割してから、各単語が HashMap にあるかどうかを確認します。これは、文の長さに比べて単語のリストが非常に大きくなる場合に適しています。

于 2013-08-25T19:15:26.307 に答える
0

Hashmap<String ,ArrayList<String>> を作成することをお勧めします

1つの単語に複数の意味があるためです。

そのため、意味を見つける必要がある単語を渡すだけです。

並べ替えて保存する必要がある場合は、ツリーマップも使用できます。

単語の意味を見つける方法は次のとおりです。

ArrayList<String> 意味 =map.get("カウボーイ");

for(String string : 意味) { Log.v("意味",string); }

于 2013-08-25T19:33:17.963 に答える