2012-05-12 3 views
0

Я пытаюсь выполнить поиск, если char из массива alpabet равен элементу textCharArray. И если так, сделайте некоторый математический: номер символа из алфавита, чтобы добавить значение arrayList. Но я получаю сообщение об ошибке:java check values ​​

java.lang.ArrayIndexOutOfBoundsException

Проблема должна быть для cicles. Но я не знаю, как это исправить. Код:

   outputText.setText(""); 
      inputTextString = inputText.getText().toString().replace(" ", ""); //panaikinami tarpa 
      char[] textCharArray = inputTextString.toCharArray(); //seka paverciama char masyvu 
      int l = textCharArray.length; 
      char[] alphabet = {'A','B','C','D','E','F','G','H','I','K','L','M','N','O','P','Q','R','S','T','V','X','Y','Z'}; 
      int alpLenght = alphabet.length; 
      System.out.println(alpLenght); 
      stringKey = inputKey.getText().toString(); 
      int k = Integer.parseInt(stringKey); 
      List<Integer>keyList = new ArrayList<Integer>(); 
      while(k > 0){ 
       keyList.add(k%10); 
       k = k /10; 
      } 
      Collections.reverse(keyList); 
      int j = 0; 
      int temp; 
      for(int i = 0; i <= l; i++){ 
       for(int ii = 0; ii < alpLenght; i++){ 
        if(j < keyList.size()){ 
         if(textCharArray[i] == alphabet[ii]){ 
          temp = ii + keyList.get(j); 
          System.out.println("Uzkoduotas: " + temp); 
          } 
         j++; 
        } 



       else { 
        j = 0; 
         if(textCharArray[i] == alphabet[ii]){ 
          temp = ii + keyList.get(j); 
          System.out.println("Uzkoduotas: " + temp); 
         } 
        } 
        j++; 
       } 
+4

Просить незнакомцев обнаружить ошибки в коде путем осмотра не является продуктивным. Вы должны идентифицировать (или, по крайней мере, изолировать) проблему, используя отладчик или операторы печати, а затем вернуться с более конкретным вопросом (как только вы сузили его до 10-строчного [тестового случая] (http://sscce.org)). –

ответ

1

У вас ошибка здесь

 for(int i = 0; i <= l; i++){ 
      for(int ii = 0; ii < alpLenght; i++){ 
       if(j < keyList.size()){ 
        if(textCharArray[i] == alphabet[ii]){ 
         temp = ii + keyList.get(j); 
         System.out.println("Uzkoduotas: " + temp); 
         } 
        j++; 
       } 

У вас есть и бесконечный цикл из-за неисправного для, и я в настоящее время увеличивается, пока он не выходит за пределы границ.

Вы можете использовать переменную II но увеличиваем я в этой строке:

for(int ii = 0; ii < alpLenght; i++){ 

Заменить

for(int ii = 0; ii < alpLenght; ii++){ 
1

Использование

for(int i = 0; i < l; i++)<------Remove = 

вместо

for(int i = 0; i<=l; i++) 

Last index of array is array.size()-1 и вы пытаетесь получить array.size()

так ArrayIndexOutOfBoundException ...