我有一个数组String[] questions={"adorable", "able", "adventurous"};
,我还有一个包含所有形容词的数组t []。我想在数组t []中找到可爱,干练和冒险的字样。到目前为止,我有这个行代码,但它似乎没有工作。有人可以帮帮我吗?
String u = sn.nextLine();
String[] t = u.split(" ");
for (y = 0; y <= question.length; y++) {
for (int w = 0; w < t.length; w++) {
if (t[w].equals(question[y])) {
System.out.print(t[w] + " ");
break;
}
}
}
答案 0 :(得分:4)
这个怎么样:
Set<String> s1 = new HashSet<String>(Arrays.asList(t));
Set<String> s2 = new HashSet<String>(Arrays.asList(questions));
s1.retainAll(s2);
现在s1
包含t
中也出现在question
中的所有字符串。
例如:
String[] t = "Hello, world! I am adventurous and adorable!".split("\\W+");
String[] questions = {"adorable", "able", "adventurous"};
Set<String> s1 = new HashSet<String>(Arrays.asList(t));
Set<String> s2 = new HashSet<String>(Arrays.asList(questions));
s1.retainAll(s2);
System.out.println(s1);
[adventurous, adorable]
答案 1 :(得分:1)
做:
for (int y = 0; y < question.length; y++) {
}
而不是<=
。问题是由于您没有question[question.length]
元素。
另外,我没有看到您声明y
变量的位置。
更新:以下是完整示例:
String[] questions = {"adorable", "able", "adventurous"};
String u = "able adorable asd";
String[] t = u.split(" ");
for (int y = 0; y < questions.length; y++) {
for (int w = 0; w < t.length; w++) {
if (t[w].equals(questions[y])) {
System.out.print(t[w] + " ");
break;
}
}
}
打印:
adorable able
答案 2 :(得分:1)
for(String question: questions){
for(String word: t){
if(question.equals(word)){
//Do somethin
}
}
}
答案 3 :(得分:0)
另一种解决方案是使用数据结构,例如ArrayList或LinkedList,而不是数组。
这样,您只需调用contains()。