2017-03-05 3 views
0

Ich habe diesen Code. Dieser Code wertet das erste String aus, wenn es ein Zeichen ähnlich dem zweiten String enthält, und wenn das zweite String THAT-Zeichen enthält, ersetzen Sie dieses Zeichen in dem zweiten String mit "Q". Die Beispiel-Strings sind:Verschachtelte Schleife funktioniert nicht richtig

str1 = abc; 
str2 = dagb; 

Im ersten String, die "abc" ist, wertet sie aus, wenn "a" in den zweiten String enthält, die "dagb", und wenn das so ist, "a" in die String "dagb" wird durch "Q" ersetzt, so dass die Ausgabe "dQgb" sein wird.

Mein Problem ist die verschachtelte Schleife. Nach dem Finden des ersten Zeichens in der ersten String, stoppt es die Ausgabe meines Codes "dQgb". Es sollte weiterhin eine Schleife durchlaufen. Finden des nächsten Zeichens, das "b" ist, in der ersten String "abc".

Also sollte die endgültige Ausgabe "dQgQ" sein.

String g = "abc"; 
String h = "dagb"; 
for(int j = 0; j < g.length(); j++) { 

    char c = g.charAt(j); 
    for (int k = 0; k < h.length();k++) { 

     char l = h.charAt(k); 
     if(c == l) { 
      String inputs = g.replace(c, ' '); 
      String inputss = h.replace(Character.toString(l),"Q"); 

      input = input.replace(g, inputs); 
      input = input.replace (h, inputss); 
      input = input.replace (" ", ""); 
      // break; 
     } else { 
      continue; 
     } 

    } 

} 
+0

Was in Ihrem Fall eingegeben wird, wie Sie es verwenden und würde uns die ganze Kontext – Mehdi

Antwort

0

Ich bin nicht sicher, wie Sie Ihren Code zu beheben, aber Sie können diese verwenden:

String g = "abc"; 
String h = "dagb"; 
for(int j = 0; j < g.length();j++){ 
    char c = g.charAt(j); 
    h = h.replace(c,'Q'); 
} 
0

Ich würde eine StringBuilder bevorzugen, weil es wandelbar ist, dann String.contains(CharSequence) nennen, wenn der Wert zu bestimmen ist in der ersten String vorhanden. So etwas wie,

String g = "abc"; 
String h = "dagb"; 
StringBuilder sb = new StringBuilder(h); 
for (int i = 0; i < sb.length(); i++) { 
    if (g.contains(String.valueOf(sb.charAt(i)))) { 
     sb.setCharAt(i, 'Q'); 
    } 
} 
System.out.println(sb); 

welche Ausgänge (wie gewünscht)

dQgQ 
+0

was ist, wenn Q eine Zeichenfolge ist? oder eine Zeichenfolge wie "Hallo"? –

+0

@JohnOtom Ich könnte in diesem Fall einen regulären Ausdruck vorschlagen, aber das ist von Natur aus komplexer als das, was Sie gefragt haben (was in der Praxis schon ungewöhnlich ist). –

Verwandte Themen