首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环不退出

循环不退出
EN

Stack Overflow用户
提问于 2015-07-28 17:33:09
回答 5查看 336关注 0票数 0

在使用循环编写简单的java代码以替换给定字符串中的特定字符时,我很困惑地发现了这个错误。详情如下:

代码语言:javascript
复制
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”。

我要改正的代码是:

代码语言:javascript
复制
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和编程的新手,我无法管理这些更正。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-07-28 17:47:41

这是工作代码

代码语言:javascript
复制
 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

票数 4
EN

Stack Overflow用户

发布于 2015-07-28 17:42:15

首先,您不需要2而循环。

其次,i永远停留在sb.length() - 1,使其成为一个无限循环。

您可以使用replacereplaceAll代替。

代码语言:javascript
复制
String st = "123qq11 1q1 11q1 1qq11 1q1 11q1"
st = st.replace("q", "Q");

如果你想用with循环来做的话。

代码语言:javascript
复制
int i = 0; 
while(i < sb.length())
{
 if(sb.charAt(i) == 'q')
  sb.setCharAt(i, 'Q');
i++;
}
票数 4
EN

Stack Overflow用户

发布于 2015-07-28 17:44:22

如果你不想使用替换,你可以这样做。

代码语言:javascript
复制
for (int i = 0; i < st.length(); i++)
    if (st.charAt(i) == 'q')
        st.setCharAt(i, 'Q');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31683355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档