2017-03-05 9 views
0

이 코드가 있습니다. 이 코드는 두 번째 String과 유사한 문자가 포함 된 경우 첫 번째 String을 평가하고 두 번째 String에는 THAT 문자가 포함 된 경우 두 번째 String의 문자를 "Q"로 바꿉니다. 예 문자열은 "a"는 경우에 따라서 "A"에서 "dagb가"이고, 상기 제 String에 포함 된 경우 "ABC"인 제 String에서는중첩 루프가 제대로 작동하지 않습니다.

str1 = abc; 
str2 = dagb; 

, 그것을 평가 String "dagb"는 "Q"로 바뀌므로 출력은 "dQgb"가됩니다.

내 문제는 중첩 루프입니다. 처음 String에서 첫 번째 문자를 찾으면 내 코드 "dQgb"의 출력을 중지합니다. 계속 반복해야합니다. 첫 번째 String "abc"에서 "b"인 다음 문자를 찾습니다.

따라서 최종 출력은 "dQgQ"여야합니다.

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

귀하의 경우 입력은 무엇인가, 당신이 그것을 사용하는 방법을 우리에게 전체 컨텍스트 Q 문자열을 어떤 경우 – Mehdi

답변

0

나는 코드를 수정하는 방법을 잘 모르겠지만, 당신은이를 사용할 수 있습니다 : 값이 있는지 확인 String.contains(CharSequence) 전화가 변경할 수을 때문에

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

내가 그런 다음 StringBuilder를 선호 첫 번째 String에 있습니다. (요청에 따라)를 출력 뭔가 같은

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

dQgQ 
+0

을 줄 것이다? 또는 "hello"와 같은 문자열? –

+0

@JohnOtom이 경우 정규 표현식을 제안 할 수도 있지만, 이는 본질적으로 사용자가 요구 한 것보다 더 복잡합니다 (실제로는 실제로 이상합니다). –

관련 문제