0

alpabet配列のcharがtextCharArrayの要素と等しいかどうかを検索しようとしています。もしそうなら、いくつかの数学を行います:arrayList値に追加するアルファベットからのchar番号。しかし、エラーが発生します:

java.lang.ArrayIndexOutOfBoundsException

問題はシクルにあるはずです。しかし、私はそれを正確に修正する方法がわかりません。コード:

                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

2 に答える 2

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..。

于 2012-05-12T11:11:57.263 に答える
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++;
                }

の障害のために無限ループが発生し、iは範囲外になるまでインクリメントされます。

ii変数を使用しますが、次の行でiをインクリメントします。

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

と置換する

   for(int ii = 0; ii < alpLenght; ii++){
于 2012-05-12T11:16:29.727 に答える