我希望能够顺序地将一个字符串与所有其他字符串进行比较,然后向下移动到下一个字符串,并将这些字符串与其下面的所有其他字符串进行比较。
这是我的代码。它正确地比较了第一个字符串并找不到匹配项。但是当另一个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();
}
答案 0 :(得分:1)
循环始终从0到children.length
[在内循环],并在内循环的开头添加以下条件:
if (i == everything) continue;
它将跳过内部循环i == everything
的每次迭代,因此您只会检查不相等的字符串。
但请注意,您将检查每两个字符串两次(例如:您将检查i == 1
,everything == 2
和i == 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);
}
}
通过这种方式,您只需比较一次所有内容,而不是将相同的位置与自身进行比较。