我目前正在为类编写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++;
}
分段,因为它无限延伸。有没有正确的方法来做到这一点?教授提到它可以在没有循环的情况下完成,虽然我可以看到它是可能的,但我不认为它很短。任何帮助将不胜感激,谢谢!
最佳答案
String str="ayyusaab";
char[] ch=str.toCharArray();
for(int i=0;i<ch.length-1;i++){
for(int j=i+1;j<ch.length-1;j++){
if(ch[i]==ch[j]) {
System.out.println(ch[i]+" at Index "+i +"with j at "+j);
}
}
}
关于java - 您可以使用 charAt(); 来比较字符串中的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459972/