Можете ли вы использовать charAt (); s для сравнения значений в строке? - PullRequest
0 голосов
/ 19 октября 2019

В настоящее время я пишу код 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++;

    }

, поскольку он просто бесконечен,Есть ли правильный способ сделать это? Профессор упомянул, что это можно сделать без петель, и хотя я вижу, что это возможно, я не вижу, чтобы оно было коротким. Любая помощь будет оценена, спасибо!

1 Ответ

0 голосов
/ 19 октября 2019
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);
      }
   }
}
...