字符串迭代,末尾有数字(初学者)

时间:2018-07-10 16:38:05

标签: java methods iteration

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

  

“ Thiiis iiis aaa tesst”

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

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

  

这是一个测试19212325272

这是我用于此的代码:

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

谢谢!

3 个答案:

答案 0 :(得分:1)

这是由于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

答案 1 :(得分:0)

由于w += w.length() - 1的原因,是当您将两个相同的字符添加到w变量时,它的长度是多少。当您将其删除(并在for循环之后添加后,检查最后一个字符是否与以前的字符相同)之后,此代码也可以正常工作

答案 2 :(得分:0)

您根本不需要Codable条件。以下程序删除重复的字符:

if