在他们的班次比较两个字符串

时间:2012-03-26 12:08:07

标签: java string shift

首先,代码:

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。

我在代码中做错了什么?有人能帮助我吗?

4 个答案:

答案 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 );