Я считаю, что название объясняет все это. Вот мой код:Я получаю исключение ArrayOutOfBounds
public String encrypt(String a) {
char regex[] = a.toCharArray();
char ans[] = {'E'};
int anspointer = 0;
for(int i = 0; i < regex.length; i+=2){
ans[anspointer] = regex[i];
anspointer++;
int b = r.nextInt(alpha.length-1);
System.out.println("random number b="+b + " Contains:" + alpha[b]);
ans[anspointer] = alpha[b];
anspointer++;
int c = r.nextInt(alpha.length-1);
System.out.println("random number c="+c + " Contains:" + alpha[c]);
ans[anspointer] = alpha[c];
anspointer++;
}
return ans.toString();
}
И программный выход.
alpha size: 58
Encrypting: ASDF1234
random number b=16 Contains:Q
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at sec.encrypt(sec.java:39)
at sec.main(sec.java:56)
Строка 39 в методе Encrypt является:
System.out.println("random number b="+b + " Contains:" + alpha[b]);
Что странно, учитывая тот факт, что она производит выход.
Альфа список:
public final char[] alpha = { 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a',
'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
Random r = new Random();
г значение Приветствия :)
Самый простой способ узнать, что происходит, это использовать отладчик в вашей среде IDE. –
Код, который вы отправили, даже не компилируется. Где определяется «r»? Узнайте, как использовать отладчик. Мы не отладчики людей. Cheers :) – OldProgrammer
'ans' имеет только один элемент, пока вы храните его, чтобы добавить его в' anspointer'. Это конечно. – sashkello