【发布时间】:2019-10-19 02:13:52
【问题描述】:
我目前正在为类编写 Java 代码,并且正在尝试弄清楚如何在用户输入上实现运行长度编码。我遇到的主要问题是将第一个字母与下一个字母进行比较,并将该字母与下一个字母进行比较,依此类推,看看它们是否是同一个字母。目前我有:
System.out.print("Enter a string: ");
String s1 = reader.nextLine();
int sum = 0;
char ast = '*';
//System.out.println("Run length encoded version of string: ");
for (int counter = 0; s1.charAt(counter) <= s1.length()-1; counter++) {
for (int j = 0; s1.charAt(counter) == s1.charAt(j)+1; j++) {
sum++;
counter++;
}
if (sum >= 4) {
System.out.print(ast + s1.charAt(counter) + sum);
}
else {
System.out.print(s1.charAt(counter));
}
}
我知道这个大问题来自哪里以及为什么它不起作用但是,即来自
for (int j = 0; s1.charAt(counter) == s1.charAt(j)+1; j++) {
sum++;
counter++;
}
segment,因为它只是无限的。有没有合适的方法来做到这一点?教授提到它可以在没有循环的情况下完成,虽然我可以看到它是可能的,但我看不到它很短。任何帮助将不胜感激,谢谢!
【问题讨论】:
-
s1.charAt(j)+1?为什么要给 字符加一个? 你的意思是给位置加一个吗?那将是s1.charAt(j+1)。 -
欢迎来到 Stack Overflow。请阅读the help pages、the SO tour、阅读how to ask good questions,以及this question checklist。请记住始终添加适当的语言标签,否则有些人会跳过您的问题。
-
@paxdiablo 哦,我明白了。我认为它类似于 length()-1 ,它会修改它的位置。你是对的!谢谢你。 :)