2013-12-03 4 views
0

Эта программа делает то, что я хочу, но она также выводит массивную большую ошибку. Что говорит что-то вроде «массив вне границ. String index out of bounds». Программа предназначена для ввода предложения и переписывания его с использованием разных букв (4 символа вверх) из алфавита. Пожалуйста, помогите мне прояснить эту ошибку!String Index out of bounds error, basic program

public class Encryption 
{ 
public static void main (String [] args) 
{ 
System.out.print("Enter a message to encrypt: "); 
String input = Console.readString(); 

for(int i = 0; i<100; i++) 
{ 
char oldChar = input.charAt(i); 

char encryptedChar = (char) (oldChar + 4); 

System.out.print(encryptedChar); 
} 
} 
+1

Какая часть ошибки вы не понимаете? Подсказка: когда остановка вашего цикла? – SLaks

ответ

1

Если вы получаете StringIndexOutOfBoundsException, то ваш вход не длиной 100 символов.

Не ожидайте 100 символов; остановите цикл for, когда i достигнет длины вашей строки.

for (int i = 0; i < input.length(); i++) 
0

Измените границы петель. Вы выполняете цикл от i = 0 до i = 99, который будет превышать входную длину, если пользователь вводит менее 100 символов.

for (int i = 0; i < input.length(); i++) 
+0

Спасибо, ребята. Это исправило это. – user3037813

1

Является ли вход всегда символом 100 символов, я считаю, что нет, и это ошибка. Замените 100 на input.length()

0

Как указано ранее, вы жестко закодировали цикл для повторения 100 символов. Что, если строка не равна 100 char