我有一个代码可以“删除”句子中连续出现多次的所有字符。例如:


  “ Thiiis iiis aaa tesst”


我使用charAt()length()方法(这是大学的任务,只允许使用这两种方法)。
在某种程度上,它可以正常工作,但我的问题是:

为什么我在句子结尾看到数字?谁能告诉我我的代码是否错误?


  这是一个测试


这是我用于此的代码:

public static String reduce(String w) {
    String result = "";
    for (int i = 0; i < w.length() - 1; i++) {
        if(w.charAt(i) == w.charAt(i + 1)) {
            w += w.length() - 1;
        }
        else {
            result += w.charAt(i);
        }
    }
    return result;
}


谢谢!

最佳答案

这是因为w += w.length() - 1。您不需要。

修改后的代码:-

public static String reduce(String w) {
    if (w == null) return null;         // in case if w is NULL
    String result = "";
    result += w.charAt(0);
    for (int i = 1; i < w.length(); i++) {
        if (w.charAt(i - 1) != w.charAt(i)) {
            result += w.charAt(i);
        }
    }
    return result;
}


输出:-

Thiiis iiis aaa tesst
This is a test

关于java - 字符串迭代,末尾有数字(初学者),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51270349/

10-12 13:53