首先,代码:
String account1= "0000180000";
String account2= "0000000180";
int i = 0;
int j = 0;
for (; i < account1.length() -1; i++ ) {
char test1 = account1.charAt(i);
while (test1 != '0') {
System.out.println(i);
break;
}
}
for (; j < account2.length() -1; j++) {
char test2 = account2.charAt(j);
while (test2 != '0') {
System.out.println(j);
break;
}
}
if (i > j) {
int res = i-j;
System.out.println(res);
} else {
int res = j-i;
System.out.println(res);
}
由于转变,我得到0而不是3。
我在代码中做错了什么?有人能帮助我吗?
答案 0 :(得分:3)
我认为你应该用if替换你的。 while内的中断意味着:退出当前循环,这就是while本身,但你想退出我想的那样。
答案 1 :(得分:1)
以下内容应为if
而不是while
while (test1 != '0'){
System.out.println(i);
break;
}
此for (; i < account1.length() -1; i++ )
也可能是for (; i < account1.length(); i++ )
答案 2 :(得分:1)
break
只会让您脱离while
循环,而不是for
。
我想你可能想说:
if (test1 != '0'){
System.out.println(i);
break;
}
和
if (test2 != '0'){
System.out.println(j);
break;
}
答案 3 :(得分:1)
如何使用运行时中的许多辅助方法?
String account1= "0000180000";
String account2= "0000000180";
String pattern = account1.replaceAll("^0+", "").replaceAll("0+$", "");
int pos = account2.indexOf( pattern ); // TODO Check this for != -1 to make sure there is a match
int res = Math.abs( account1.indexOf( pattern ) - pos );