2017-03-05 141 views
0

我有这段代码。如果第一个String包含类似于第二个String的字符,并且第二个String包含THAT字符,则该代码将对第一个String进行评估,请将第二个String中的该字符替换为“Q”。 示例字符串是:嵌套循环无法正常工作

str1 = abc; 
str2 = dagb; 

在第一String,这是“ABC”,它的计算结果,如果“A”,在第二String,这是“dagb”,如果是这样,“A”中包含将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

在你输入的情况下是什么,你如何使用它,会给我们整个上下文 – Mehdi

回答

0

我不知道如何解决你的代码,但是你可以使用这个:

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.contains(CharSequence)以确定是否值出现在第一个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

如果什么Q是一个字符串?或像“你好”的字符串? –

+0

@JohnOtom在这种情况下,我可能会提出一个正则表达式,但这本质上比你所问的要复杂得多(这在实践中已经不寻常了)。 –