所以这是我的问题的延续:here
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 :(得分:1)
int index;
...
if (s.toLowerCase().contains(words[i].toLowerCase())) {
check = true;
index = i;
} else {
....
if (check) {
System.out.println(meanings[index]);
} else {
...
答案 1 :(得分: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]);
}
答案 2 :(得分: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!");
}
答案 3 :(得分: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");
}
答案 4 :(得分: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);
答案 5 :(得分: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中。如果你的单词列表与句子的长度相比会很大,那就很好了。
答案 6 :(得分:0)
我建议你制作一个Hashmap&lt; String,ArrayList&lt; String&gt;&gt;
因为你对一个词有多个含义。
所以现在只需传递你需要找到的含义。
如果你需要以排序的方式存储它们,你也可以使用treemap。
所以这里是你如何找到一个单词的意思。
的ArrayList&LT;字符串&GT;意思是= map.get(“牛仔”);
for(String string:meaning){ Log.v( “意”,字符串); }