2012-03-26 90 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);