Помогите пожалуйста, почему выдает ошибка, когда пишешь на команде больше 7 символов??? Заранее спасибо
import java.util.Arrays;
import java.util.Scanner;
public class Encrypted {
public static void main(String[] args) {
Scanner t = new Scanner(System.in);
Scanner k = new Scanner(System.in);
String text, key;
byte[] result = new byte[1000];
System.out.print("Введите текст для зашифровки: ");
text = t.nextLine();
System.out.print("Введите 4 значный ключ шифрования с пробелами: ");
key = k.nextLine();
//System.out.println();
System.out.println(key);
for (int i = 0; i < text.length(); i++) {
byte[] text_byte = text.getBytes();
byte[] key_byte = key.getBytes();
//if (key_byte[i])
result[i] = (byte) (text_byte[i] + key_byte[i]);
//System.out.print("\n" + (text_byte[i]));
String c_str = new String(result);
System.out.print(c_str);
//System.out.print("\n" + (result[i]));
result[i] = 0;
}
System.out.println();
}
}
Введите текст для зашифровки: 12345678
Введите 4 значный ключ шифрования с пробелами: 1 2 3 4
1 2 3 4
b R e T h V k Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 at Encrypted.main(Encrypted.java:29)
Всё просто:
когда ты вводишь ключ: 1 2 3 4
, то длина массива key_byte
равна 7, а не 8. Поэтому когда i = 7
, то key_byte[i]
выкидывает ошибку.
Если же поставить в конце 1 2 3 4
пробел — то будет 8 элементов и ошибки не будет.
Либо дозаполнять последний элемент массива байтом, либо придумывать еще что-то, чтобы работало как задумано
Все это ты бы мог сам увидеть банально включив отладчик и отладив свой код Отладчик IntelliJ IDEA.
вы не правильно реализовали алгоритм нужен двойной цикл
` for (int i = 0; i < text.length(); i++) {
byte[] text_byte = text.getBytes();
byte[] key_byte = key.getBytes();
for(int j=0; j<key_byte.lenght; j++)
result[i] = (byte) (text_byte[i] + key_byte[j]);
....`
конечно при условии что я понял что вы хотите сделать, дайте алгоритм шифрования если я вас не понял
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Сдавал финальный экзамен на intuitru
Код выставлять не буду, ибо толку от этого ноль в моем случаеВсе очень просто
Как получить токен в android приложении программно для получения уведомлений?