您可以使用charAt();来比较字符串中的值吗?

问题描述 投票:0回答:1

我正在为类编写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++;

    }

段,因为它无限地前进。有适当的方法来做到这一点吗?教授提到,可以没有循环地完成它,尽管我可以看到它很短,但我可以看到它是不可能的。任何帮助将不胜感激,谢谢!

java string-comparison
1个回答
0
投票
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);
      }
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.