ЭТО java.lang.ArrayIndexOutOfBoundsException ОШИБКА

public static int StringInString(String one, String two) {
        if (one==null||two==null||one.equals("")||two.equals("")){
            return 0;
        }
        else{
            int x=one.length(),y=two.length(),sum=0,i=0,j=0;
            char[] onee=one.toCharArray();
            char[] twoo=two.toCharArray();
            while(i<x){
                while(j<y){
                    if (onee[i]==twoo[j]){
                        i++;
                        j++;
                    }
                    else{
                        if (j==0){
                            i++;
                        }
                        else{
                            j=0; 
                            i++;
                        }
                    }
                }
                sum++;
                i=i-y+1;
                j=0;
            }
         return sum;
        }
    }
  public static void main(String[] args){
    int sum;
    sum = StringInString("salamsal","sal");
    System.out.println(sum);

 }

привет, я не знаю, почему возникла эта ОШИБКА ?! пожалуйста, помогите мне; этот код хочет подсчитать похожий текст в двух строкахa и результат этого кода должен быть = 2.

Отладка должна указывать вам правильное направление, а не размещать здесь код.

Gokul Nath KP 31.03.2018 13:52

спасибо за внимание и помощь

amir y 31.03.2018 14:08

Вам нужно сделать это так? Есть более простой способ.

DevilsHnd 31.03.2018 14:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы находитесь внутри второго цикла while, даже если i> x, цикл продолжается до тех пор, пока j <y. Поэтому, когда случается, что i ++ во втором цикле заставляет i стать больше x-1, а j все еще меньше y, в первом «if» (всегда внутри второго цикла while) программа проверяет, если onee [8] = = twoo [0], и поскольку onee [8] не существует (поскольку индексы "salamsal" идут от 0 до 7), это показывает ошибку, что индекс выходит за пределы массива. Чтобы устранить ошибку, вы должны проверить значение i внутри второго цикла, потому что может случиться так, что i ++ сделает этот индекс больше, чем x-1, где x, как вы заявили, является длиной первой строки.

Другие вопросы по теме