问题描述
请帮忙写下面的java代码。
当我输入时,例如 aabbcccd,
输出是 99100102d,但它应该是 a2b2c3d。
谁能告诉我这段代码有什么错误? (此代码尝试捕获输入和输出特定字符的输入频率)
import java.util.*;
public class Main {
public static void main(String args[]) {
try {
Scanner scn = new Scanner(system.in);
String s = scn.nextLine(); // taking input
StringBuilder str = new StringBuilder(s);
StringBuilder str_new = new StringBuilder();
int i = 0 ;
while (i < str.length()) {
int count = 1;
while (i < str.length()-1 && str.charat(i) == str.charat(i+1)){
count += 1;
i++;
}
if (count == 1)
str_new.append(str.charat(i));
else
str_new.append(str.charat(i) + (char)count);
i++;
}
System.out.println(str_new);
} catch (Exception e) {
return;
}
}
}
解决方法
在问题来自str.charAt(i) + (char)count
,因为它们是2个字符,它们与总结了他们的int
的值,
解决,通过使用连续的append()
呼叫
str_new.append(str.charAt(i)).append(count);
可以通过使用外for-loop
,并在append
,以及增量只有i
在内部while
通过保存{{1的三元操作者减少代码}}之前
i