• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesuwanie się po tablicy - java

Object Storage Arubacloud
0 głosów
481 wizyt
pytanie zadane 9 stycznia 2019 w Java przez msukiennik Początkujący (380 p.)

Witam,

mam problem z zadaniem. Cały czaswyskakuje mi błąd wskazujący na brak danego indexu w tablicy. Jednak nie wime jak mogłabym o rozwiązac inaczej, wsyztsko wydaje się okej. Czy ktoś mógłby trochę naprowadzić?

TREŚĆ ZADANIA:

Zlicz ilość wszystkich potrójnych wystąpień w napisie.

Mój kod:


public class viva {
    public static void main(String[] args) {

        System.out.println(tripple("kkktokooolwieeek"));


    }

    static int tripple(String str) {

        char[] table = str.toCharArray();

        int sum = 0;
        int sumOf3 = 0;


        for (int i = 0; i < table.length; i++) {

            String value1 = str.valueOf(table[i]);
            String value2 = str.valueOf(table[i + 1]);

            if (value1.equals(value2)) {

                sum++;
            }

            sumOf3 = sum / 3;

    }
        return sumOf3;
    }
}

 

3 odpowiedzi

+1 głos
odpowiedź 9 stycznia 2019 przez Dev Ox29A Dyskutant (8,400 p.)
   String value2 = str.valueOf(table[i + 1])

W tym miejscu masz błąd - index po za zakresem.

Zobacz co się dzieje jak zmienna i przyjmie będzie miała maksymalną wartość czyli całą długość tablicy a Ty jeszcze dodasz do tej wartosci 1. Wtedy zawartość tablicy bedzie po za zakresem.

komentarz 9 stycznia 2019 przez msukiennik Początkujący (380 p.)
ale jak to obejść, jeżeli chce zastosowac wypisaną przezemnie funkcję, czyw ogóle muszę zmienić metodę? Bo inaczejnie będę mogła się odnieść do tego elementu...
komentarz 9 stycznia 2019 przez Dev Ox29A Dyskutant (8,400 p.)
 for (int i = 0; i < table.length - 1 ; i++) {

Np tak możesz obejść problem z ostatnim elementem.

Tak swoją drugą potrójne wystąpienia liter koło siebie ?

 

komentarz 9 stycznia 2019 przez msukiennik Początkujący (380 p.)
haha np np. dddlaczegggo :D
komentarz 9 stycznia 2019 przez msukiennik Początkujący (380 p.)
dziękuję! im dłuzej siedze przy kodzie tym moniej myśle widzę... dzięki jeszcze raz za pomoc :))
komentarz 9 stycznia 2019 przez Dev Ox29A Dyskutant (8,400 p.)
Nie ma za co :). Tak swoją drogą nie za bardzo rozumiem jak ma ta metoda działać :)
komentarz 10 stycznia 2019 przez msukiennik Początkujący (380 p.)
możesz coś innego zaproponować?

nie wiedziałam kompletnie jak to ugryźć, ale zadziała :D jeżeli 2 i 3 element  będzie taki jak 1 (tak ma być docelowo ale tablica mi się kończyła) :D to sum++;
0 głosów
odpowiedź 9 stycznia 2019 przez plucins Stary wyjadacz (11,110 p.)
Spodziewam się, że problem występuje w tej linijce - table[i + 1]

Jeżeli tablica ma 5 elementów to ostatnia wartość zmiennej i=4. Co za tym idzie, próbujesz odwołać się do 5 elementu, którego nie ma.
0 głosów
odpowiedź 10 stycznia 2019 przez msukiennik Początkujący (380 p.)

Wrzucam rozwiązanie dla tych, którzy by szukali pomocy, nagle mnie oświeciło, ze można też w 2 stronę...

 

 


public class viva {
    public static void main(String[] args) {

        String str = "Dlaaaczzzegggo";


        char[] table = str.toCharArray();

        int sum = 0;

        for (int i = 0; i < table.length; i++) {

            if (i > 1) {

                String value1 = str.valueOf(table[i]);

                String value2 = str.valueOf(table[i - 1]);

                String value3 = str.valueOf(table[i - 2]);


                if (value1.equals(value2) && value1.equals(value3)) {
                    sum++;
                }
            }
        }

        System.out.println(sum);
    }
}

 

komentarz 10 stycznia 2019 przez RafalS VIP (122,820 p.)

Ale wiesz, że chary też da się porównywać i nie musisz ich konwertowac do stringow? A if w petli jest co najmniej dziwny, bo mozesz przeciez zaczac iterowac od 2.

        for (int i = 2; i < table.length; i++) {
            if(table[i-2] == table[i-1] && table[i-1] == table[i]){
                sum++;
            }
        }

 

komentarz 11 stycznia 2019 przez msukiennik Początkujący (380 p.)
dizęki za podpowiedź! wszystko mi się już miesza!

Podobne pytania

0 głosów
0 odpowiedzi 190 wizyt
pytanie zadane 13 stycznia 2018 w C i C++ przez neli303 Użytkownik (650 p.)
–1 głos
2 odpowiedzi 249 wizyt
pytanie zadane 23 lutego 2016 w C i C++ przez KTK Nowicjusz (150 p.)
0 głosów
1 odpowiedź 1,279 wizyt
pytanie zadane 12 października 2015 w C i C++ przez Armando Obywatel (1,870 p.)

92,552 zapytań

141,399 odpowiedzi

319,533 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...