顺序比较字符串与其他字符串

时间:2012-03-21 19:48:54

标签: java

我希望能够顺序地将一个字符串与所有其他字符串进行比较,然后向下移动到下一个字符串,并将这些字符串与其下面的所有其他字符串进行比较。

这是我的代码。它正确地比较了第一个字符串并找不到匹配项。但是当另一个for循环移动到i的下一个值时,everystring = 1,因此我将它自己进行比较。每次进入另一个循环时,如何将内部for循环移动一个值?

for (int everystring = 0; everystring < children.length; everystring++) {

   String current = children[everystring].substring(0,
         children[everystring].indexOf("_"));

   for (int i = 1; i < children.length; i++) {
      String innercurrent = children[i].substring(0,
            children[i].indexOf("_"));

      if (current.equalsIgnoreCase(innercurrent)) {

         System.out.println("Match");
      } else
         System.out.println("No Match");
   }
   System.out.println();
}

5 个答案:

答案 0 :(得分:1)

循环始终从0到children.length [在内循环],并在内循环的开头添加以下条件

if (i == everything) continue;

它将跳过内部循环i == everything的每次迭代,因此您只会检查不相等的字符串。

但请注意,您将检查每两个字符串两次(例如:您将检查i == 1everything == 2i == 2, everything == 1
如果你不需要它:everything + 1到内部循环迭代children.length

答案 1 :(得分:1)

如果我理解你的问题,你需要做的就是在内循环的初始值设定项中使用everystring的值:

for (int everystring = 0; everystring < children.length; everystring++) {
    String current = children[everystring].substring(0,
     children[everystring].indexOf("_"));
    for (int i = everystring+1; i < children.length; i++) {
        String innercurrent = children[i].substring(0,
        children[i].indexOf("_"));

        if (current.equalsIgnoreCase(innercurrent)) {

            System.out.println("Match");
        } else
           System.out.println("No Match");
        }
    System.out.println();
 }

这会将每个字符串与数组中显示的所有字符串进行比较。

答案 2 :(得分:0)

This.
for (int everystring = 0; everystring < children.length - 1; everystring++) {

   String current = children[everystring].substring(0,
         children[everystring].indexOf("_"));

   for (int i = everystring + 1; i < children.length; i++) {
      String innercurrent = children[i].substring(0,
            children[i].indexOf("_"));

      if (current.equalsIgnoreCase(innercurrent)) {

         System.out.println("Match");
      } else
         System.out.println("No Match");
   }
   System.out.println();
}

答案 3 :(得分:0)

 int i = 0;      

   for (int everystring = 0; everystring<children.length; everystring++){

       String current = children[everystring].substring(0,children[everystring].indexOf("_"));

       i = everystring+1;

   for (;i<children.length; i++){
       String innercurrent = children[i].substring(0,children[i].indexOf("_"));



      if(current.equalsIgnoreCase(innercurrent)){

      System.out.println("Match");
      }else System.out.println("No Match");

      /* if (current.substring(0,current.indexOf("_")).equalsIgnoreCase(innercurrent.substring(0,innercurrent.indexOf("_")))){




           System.out.println("Match");


       }*/

   }
   System.out.println();
   }
}

答案 4 :(得分:0)

那是你遇到的一个奇怪的代码.__。但我会做这样的事情:

for (int i = 0; i < children.length - 1; i++) {
   String current = children[i].substring(0,children[i].indexOf("_"));

   for (int j = i + 1; j < children.length; j++) {
       String compareTo = children[j].substring(0,children[j].indexOf("_"));

       if (current.equalsIgnoreCase(compareTo))
           System.out.format("%s matches %s\n", current, compareTo);
       else
           System.out.format("%s doesn't matches %s\n", current, compareTo);
   }
}

通过这种方式,您只需比较一次所有内容,而不是将相同的位置与自身进行比较。