Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行长度编码程序在字母之前有数字_Java_String_Loops_Run Length Encoding - Fatal编程技术网

Java 运行长度编码程序在字母之前有数字

Java 运行长度编码程序在字母之前有数字,java,string,loops,run-length-encoding,Java,String,Loops,Run Length Encoding,我正在制作一个用于缩短单词的游程编码程序。 i、 e.aaabbc变为3a2bc 到目前为止,我的程序工作正常,但它没有输出3a2bc,而是输出a3b2c。那么我怎样才能切换当前的程序呢 代码: 公共类压缩{ 公共静态void main(字符串[]args){ String word=“aaabbc”; System.out.println(compress(word)); } 公共静态字符串压缩(字符串原始){ 字符串压缩=”; char ch=原始字符(0); int计数器=1; 对于(in

我正在制作一个用于缩短单词的游程编码程序。 i、 e.aaabbc变为3a2bc

到目前为止,我的程序工作正常,但它没有输出3a2bc,而是输出a3b2c。那么我怎样才能切换当前的程序呢

代码:

公共类压缩{
公共静态void main(字符串[]args){
String word=“aaabbc”;
System.out.println(compress(word));
}
公共静态字符串压缩(字符串原始){
字符串压缩=”;
char ch=原始字符(0);
int计数器=1;
对于(inti=1;i
您有:

             else {
                 compressed = compressed + ch;
                if(counter != 1){
                   compressed = compressed + counter;
                }
                ch = original.charAt(i);
                counter = 1;
             }
您应该切换前两个语句块,如

             else {
                if(counter != 1){
                   compressed = compressed + counter;
                }
                 compressed = compressed + ch;
                ch = original.charAt(i);
                counter = 1;
             }

顺便说一句,使用StringBuilder进行此操作要比使用String高效得多

此操作有效,但并非所有操作都有效。例如,“aaabbbctt”返回3a3bcT3,不确定原因,但3出现在T的末尾
             else {
                if(counter != 1){
                   compressed = compressed + counter;
                }
                 compressed = compressed + ch;
                ch = original.charAt(i);
                counter = 1;
             }