在使用循环编写简单的java代码以替换给定字符串中的特定字符时,我很困惑地发现了这个错误。详情如下:
INPUT String : "123qq11 1q1 11q1 1qq11 1q1 11q1"
REQUIRED OUTPUT: "123QQ11 1Q1 11Q1 1QQ11 1Q1 11Q1"
GOT OUTPUT: "Q23QQ11 1Q1 11Q1 1QQ11 1Q1 11Q1" as infinite loop算法:将给定字符串中的“q”替换为“q”。
我要改正的代码是:
public class Rani {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("123qq11 1q1 11q1 1qq11 1q1 11q1");
int j = 0;
int i = 0;
while (i < sb.length()) {
while (i + 1 < sb.length()) { // while 2nd
i++;
if (sb.charAt(i) == 'q') {
j = i;
break;
} else {
break;
}
}
sb.replace(j, j + 1, "Q");
System.out.println(sb);
}
}
}作为java和编程的新手,我无法管理这些更正。
发布于 2015-07-28 17:47:41
这是工作代码
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("123qq11 1q1 11q1 1qq11 1q1 11q1");
int j = 0;
int i = 0;
while (i < sb.length()) {
while (i < sb.length()) { // while 2nd
if (sb.charAt(i) == 'q') {
j = i;
break;
}
i++;
}
sb.replace(j, j + 1, "Q");
System.out.println(sb);
}
}输出:123 Q11 1Q1 11Q1 1Q11 1Q1 11Q1
发布于 2015-07-28 17:42:15
首先,您不需要2而循环。
其次,i永远停留在sb.length() - 1,使其成为一个无限循环。
您可以使用replace或replaceAll代替。
String st = "123qq11 1q1 11q1 1qq11 1q1 11q1"
st = st.replace("q", "Q");如果你想用with循环来做的话。
int i = 0;
while(i < sb.length())
{
if(sb.charAt(i) == 'q')
sb.setCharAt(i, 'Q');
i++;
}发布于 2015-07-28 17:44:22
如果你不想使用替换,你可以这样做。
for (int i = 0; i < st.length(); i++)
if (st.charAt(i) == 'q')
st.setCharAt(i, 'Q');https://stackoverflow.com/questions/31683355
复制相似问题