我正在尝试搜索alpabet数组中的char是否等于textCharArray的元素。如果是这样,一些数学:字母表中的字符数添加到arrayList值。但是我收到了一个错误:
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++;
}
答案 0 :(得分: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 ...
答案 1 :(得分: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++){