我想编码一个像...----....--.-.-..3-4.4-2.1-1.1-1.1这样的字符串-显示,首先有三个点(.3),然后有四个连字符(-4),依此类推。

我差点就做到了,但是任何地方都有错误...

static String pointsAndLines(String s){

    StringBuffer encodedString = new StringBuffer();

    int counter = 1;
    char currentChar = s.charAt(0);

    for(int i=1; i<s.length(); i++){
        if(s.charAt(i) != currentChar){
            encodedString.append(String.valueOf(currentChar) + counter);
            currentChar = s.charAt(i);
            counter = 1;
        } else counter++;
    }

    return encodedString.toString();

}


但是输出是这样的:

.3-4.4-2.1-1.1-1


最后一个.1丢失了-但是为什么呢?

最佳答案

一旦您敲了字符串的末尾,循环就终止了,并且最后一组没有追加到缓冲区中。您可以明确地附加它:

for(int i=1; i<s.length(); i++){
    if(s.charAt(i) != currentChar){
        encodedString.append(String.valueOf(currentChar) + counter);
        currentChar = s.charAt(i);
        counter = 1;
    } else counter++;
}
encodedString.append(String.valueOf(currentChar) + counter); // Here

关于java - 为什么最后一个字符不出现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53935573/

10-10 23:06