Liczenie liter Java String

0

Pomoze ktos? Chce zeby po wpisaniu "ooozzzdoo" pokazalo "3o3zd2o"

Co mam poki co:

        class Main {

        public static String StringChallenge (String str) {
            String var=" ";
            int count = 1;
            for (int i=0; i<str.length(); i++) {
                for (int j=1; j<str.length(); j++) {
                    var = var + str.charAt(i);
                    if (str.charAt(i) == str.charAt(j)) {
                            count = count + 1;
                            System.out.print(count + "" + str.charAt(i));
                            count = 1;
                    }
                }
            }
            return var;
        }

        public static void main (String[] args) {
          String test = "ooozzzdoo";
          StringChallenge(test);
        }

    }
4
  1. var to nowe słowo kluczowe w javie, nie używaj go jako nazwy zmiennej
  2. var = var + str.charAt(i); to nie ma żadnego sensu, przecież chcesz dodać do wynikowego stringa jakieś 3o czyli counter+str.charAt(i) i to TYLKO kiedy dojdziesz do sytuacji kiedy str.charAt(i) != str.charAt(j)
  3. Nigdzie nie przeskakujesz licznikiem i pomijając wszystkie "zużyte" indeksy które zliczyłeś przez j
0

Dzięki z tym var to pogmatwałem.

        class Main {

        public static String StringChallenge (String str) {
            var result=" ";
            int count = 1;
            for (int i=0; i<str.length(); i++) {
                    result = result + str.charAt(i);
                    if (str.charAt(i) == str.charAt(i+1)) {
                            count = count + 1;
                            System.out.print(count + "" + str.charAt(i));
                            count = 1;
                    }
                }
            return result;
        }
        public static void main (String[] args) {
          String test = "ooozzzdoo";
          StringChallenge(test);
        }
    }

test - ooozzzdoo
pokazuje - 2o2o2z2z2oException in thread "main"
co chce zeby pokazalo - 3o3zd2o

3

@ZoooL:

Prawie doskonale, aczkolwiek nie bardzo kumam po co Ci pętla w pętli, trochę Ci poprzestawiałem rzeczy:

class Main {
    public static void main(String[] args) {
        System.out.println(stringChallenge("ooozzzdoo"));
    }

    public static String stringChallenge(String str) {
        if (str.length() == 0) return "";
        StringBuilder result = new StringBuilder(str.charAt(0));
        int counter = 0;
        for (int i = 0; i < str.length(); i++) {
            counter++;
            if (i == str.length() - 1 || str.charAt(i) != str.charAt(i + 1) ) {
                if (counter > 1) result.append(counter);
                result.append(str.charAt(i));
                counter = 0;
            } 
        }
        return result.toString();
    }
}
0

@ZoooL no a co ma ci pokazać skoro NIGDY nie podbijasz countera o więcej niż 1? Robisz count = count + 1; a zaraz potem count = 1, to skąd sie ma wziać jakieś 3?

0

@Shalom
masz racje, z tym że "ooozzzdoo" ustawilem taki zeby ktos nie mogl znalezc zadania...
Chodzi o to ze nawet jak ustawie "oozzdoo" to pokazuje glupoty. Mianowicie: 2o2z2oException... gubiąc przy tym "d"

1

pachnie jak "pożyczone" z googla, tyle że temat był ZUPEŁNIE inny, i potem "prawie mi działa, pomóżcie"

@ZoooL: wyższych kwalifikacji tzreba, żeby wykorzystać czyjś kod niewiadomego pochodzenia, niż napisac samemu

0

@AnyKtokolwiek: Ze co? wykorzystac czyjs kod? ktory? napisz prosze wprost o co ci chodzi bo nic nie rozumie

Szkoda słów

screenshot-20210509223319.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1