2012-03-26 5 views
1

Zuerst wird der Code:Vergleichen Sie zwei String auf ihrer Schicht

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); 
} 

I 0 erhalten, anstelle von 3, als das Ergebnis der Verschiebung.

Was mache ich falsch im Code? Kann mir jemand helfen?

+0

Meinst du shift, oder drehen? –

+0

was hast du für i & j bekommen? –

+0

Danke Adam, ich meine Verschiebung –

Antwort

1

Folgendes sollte ein if kein while

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

auch sein, dies for (; i < account1.length() -1; i++) wahrscheinlich for (; i < account1.length(); i++)

3

denken sollte ich Sie, während sie mit einer if ersetzen soll. Die Pause innerhalb der while bedeutet: Beenden der aktuellen Schleife, die die while selbst ist, aber Sie wollen von der für Ich denke, zu verlassen.

+0

Beste Antwort, weil es erklärt, warum die 'Pause' nicht funktioniert hat. –

1

Die break bricht nur Sie aus der while Schleife, nicht die for.

Ich glaube, Sie wahrscheinlich zu setzen gemeint:

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

und

if (test2 != '0'){ 
    System.out.println(j); 
    break; 
} 
1

Wie über die vielen Hilfsmethoden aus der Laufzeit mit?

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