Я пытаюсь сделать метод, который разделит строку на группы по 4, и я продолжаю получать ошибку за пределы. Я не могу понять, откуда это происходит, есть ли более простой способ сделать это или что вызывает ошибку?Ошибка за пределами ошибки в простом массиве String
EDIT: РЕШЕННЫЕ плохие скобки означает INT MAX не assinged правильное значение
Соответствующий код
public void ColumnCode(String plaintext) {
System.out.println("Please enter the number of columns you want");
int columns = slave.getNum();
int MAX = (plaintext.length()-1/columns)+1; //number of times to iterate the for loop
String[] groups = new String[MAX];
for(int i = 0; i < MAX; i++) {
if((4*i)+4 > plaintext.length()) groups[i] = plaintext.substring(4*i);
else groups[i] = plaintext.substring(4*i, 4*(i+1));
System.out.println(groups[i]);
}
}
Пример сообщения об ошибке:
Now please enter the plaintext to be encrypted:
THIS IS A MESSAGE
Please enter the number of columns you want
4
THIS
IS
A ME
SSAG
E
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -3
at java.lang.String.substring(Unknown Source)
at Cryptopher.ColumnCodeClass.ColumnCode(ColumnCodeClass.java:26)
at Cryptopher.mainFile.encrypt(mainFile.java:86)
at Cryptopher.mainFile.runTheProgram(mainFile.java:55)
at Cryptopher.mainFile.main(mainFile.java:36)
Вы получаете индекс ошибки границ, потому что на последней итерации вы должны иметь 4 элемента в вашем массиве, но ваш массив заполняется только одним элементом («E»). – orgtigger