2013-08-25 30 views
0

所以這是我的問題,從這個線程的延續:here得到一個字/ String數組的意義

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"); 
    } 

但我似乎無法弄清楚如何以及在哪裏放置的具體含義用戶在edittext中鍵入的每個單詞。任何幫助將很樂意欣賞。謝謝。

+0

請參見下面的線程是否可幫助: http://stackoverflow.com/questions/7493287/android-how-do-i-get-string-from-resources-using-its-name – Daniel

回答

1
static String[] words = { "Cowboy", "animal", "monster" }; 
    static String s = "My animal is a Cowboy"; 
    static boolean check = false; 
    static String[] meanings = {"meaning1", "meaning2", "meaning3"}; 
    static ArrayList<String> typed_words = new ArrayList<String>(); 
    static ArrayList<String> typed_meanings = new ArrayList<String>(); 


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

       typed_words.add(words[i]); 
       typed_meanings.add(meanings[i]); 
       check = true; 

      } else { 

      } 

     } 

     if (check) { 
      System.out.println("Yes"); 
      for(int i=0;i<typed_words.size();i++){ 
       System.out.println("Word: "+typed_words.get(i)+" Meaning: "+typed_meanings.get(i)); 
      } 

     } else { 
      System.out.println("No"); 
     } 
1

這樣的事情呢?

int index; 
... 
if (s.toLowerCase().contains(words[i].toLowerCase())) { 
    check = true; 
    index = i; 
} else { 
.... 
if (check) { 
    System.out.println(meanings[index]); 
} else { 
... 
1

如果words及其meanings具有在兩個陣列中相同的相對位置,然後重新使用索引i打印相應的意思以及。但是,現在必須在循環外定義i,以便它現在具有更大的範圍,並在if檢查中可用。

int i = 0 
for (; i < words.length; i++) { 
    if (s.toLowerCase().contains(words[i].toLowerCase())) { 
    check = true; 
    break; 
    } 
} 
if (check) { 
    System.out.println("Meaning found: " + meanings[i]); 
} 
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!"); 
} 
1

爲什麼不使用java.util.HashMap中的地圖,其中的每一個字的含義是什麼?

String s = ""; 
HashMap<String,String> meaningMap = new HashMap<String,String>(); 
//just for the example 
meaningMap.put("cowboy", "meaning1"); 
... 
if (s.toLowerCase().contains(words[i].toLowerCase())) { 
    ouput = meaningMap.get(s); 
} 
... 
System.out.println(s); 
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])); 
    } 
} 

這基本上得到sentece形成的EditText,將其分解成詞,然後檢查,如果每個字是在HashMap中。如果你的單詞列表與句子的長度相比會很大,那麼這很好。

+0

你」我得到了無效的轉義序列 – Dunkey

0

我會建議你做一個HashMap <字符串,ArrayList的<字符串> >

,你有oneword多種含義。

所以現在只需傳遞你需要找到的意思。

如果您需要以分類方式存儲它們,也可以使用樹形圖。

所以這裏是你如何找到一個詞的意思。

ArrayList <字符串>含義= map.get(「cowboy」);

for(String string:meaning)Log.v(「meaning」,string); }

相關問題