java - 为什么最后一个字符没有出现?

标签 java string

我想将 ...----....--.-.-. 之类的字符串编码为 .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/

相关文章:

C 编程查找随机字符串中的所有单词

java - 在对话框打开时显示 toast ?

java - 使用 axistools-maven-plugin 时禁用附件支持

ios - 在 NSString 中查找俄语字符

java - 从 ArrayList<Integer> 创建二维数组

java - 如何在这段代码中只使用一个数组实例?

mysql - 如何使用 MySQL 分割字符串?

c - 反向字符串程序中的空字符是什么?

java - 对于大数据量,什么数据结构更快?

java - 使用两个不同的元素序列化 jsonArray