2012-03-26 91 views
1

首先,代码比较两个字符串:他们轮班

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

你的意思是换挡或旋转? – 2012-03-26 12:09:17

+0

你为i&j获得了什么? – 2012-03-26 12:12:40

+0

谢谢亚当,我的意思是转变 – 2012-03-26 12:22:36

回答

1

下应该是一个if不是while

while (test1 != '0'){ 
    System.out.println(i); 
    break; 
} 

而且这个for (; i < account1.length() -1; i++)也许应该是for (; i < account1.length(); i++)

3

我想你应该与如果更换您光顾。 这段时间内的休息意味着:退出当前循环,这是本身,但你想退出我猜。

+0

最好的答案,因为它解释了为什么'break'不起作用。 – 2012-03-26 12:16:45

1

break只会让您跳出while循环,而不是for

我想你可能是指放:

if (test1 != '0'){ 
    System.out.println(i); 
    break; 
} 

if (test2 != '0'){ 
    System.out.println(j); 
    break; 
} 
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);