contains()方法的问题

时间:2013-03-21 12:45:20

标签: java contains

我正在使用contains()方法编写一个简单的代码,但问题是如果我在contains()方法的参数中放置一个字符串数组,程序什么都不做(没有错误)。因此,它只需要遍历一个字符串数组并查看它是否包含第二个数组中的元素。我在论证中尝试了一个单词,它运行正常。数组不为null,我可以打印它们。那么,有什么建议吗?

这是代码的一部分:

        for(int i = 0; i < farbe.length; i++) {
            for(int j = 1; j < names.length; j++) {
                if(names[j].contains(farbe[i])) {
                    System.out.println(names[j]+"\t"+"yes");
                }
            }
        }

从。* txt文件中读取数组元素。因此,'names'数组具有单词序列,'color'数组包含颜色。数组中的部分:

姓名:

  

Herrenlederjacke&gt;&gt; Collins
  Herrenstoffjacke&gt;&gt; M H7 4B
  9-LV(schwarz | 54)
  9-LV(schwarz | 52)
  Tunika-Lederkleid&gt;> 9519

颜色

  

米色
  布朗
  施瓦茨

阵列很大,所以我只放了一小部分。

2 个答案:

答案 0 :(得分:1)

您的问题可能是java数组从索引0开始。此外,您的大括号在包含行中放错位置。试试:

for(int i = 0; i < farbe.length; i++){
    for(int j = 0; j < names.length; j++){
            if(Arrays.asList(names[j].contains(farbe[i]))){
                System.out.println(names[j]+"\t"+"yes");
            }
                             }

答案 1 :(得分:0)

假设你文件中的每一行都是数组中的单独元素,我们将有

String[] names={
        "Names:",
        "Herrenlederjacke >>Collins",
        "Herrenstoffjacke >>M H7 4B",
        "9-LV (schwarz | 54)",
        "9-LV (schwarz | 52)",
        "Tunika-Lederkleid >>9519"
};
String[] farbe={
        "beige",
        "braun",
        "schwarz",
};

检查names中哪种颜色可以使用此代码

for (String color : farbe) {//will iterate over all colors
    namesLoop:
    for(String name :names){//will iterate over all names
        if (name.contains(color)){
            System.out.println(color+"\t yes");
            break namesLoop;//we found this color, we can skip to next one
        }
    }
}