Я должен сделать Java-программу (шифр артишока) хорошо ... пожалуйста, помогите LOL
он продолжает выдавать мне ошибку -
"
java.lang.StringIndexOutOfBoundsException: String index out of range: 11
at java.lang.String.charAt(String.java:686)
at ArtichokeCipher.main(ArtichokeCipher.java:29)
"
это фактический шифр артишокапрограмма ... я получаю файл данных у пользователя, затем спрашиваю его, какой ключ использовать для смещения букв из данных внутри текстового файла.Оттуда я превращаю ключ шифра в символ, который будет использоваться в качестве номера смены, но я просто очень растерялся, почему я получаю эту ошибку.
//PROGRAM
import java.util.Scanner;
import java.io.*;
public class ArtichokeCipher {
public static void main(String[] args) throws IOException {
Scanner scan1 = new Scanner (System.in);
System.out.println("Welcome to Artichoke Cipher!");
System.out.println("Please name input file to be processed: ");
String filei = scan1.next();
Scanner scan = new Scanner (new File (filei));
System.out.println("Please enter the word to be used as the cipher key: ");
String shift = scan1.next();
String lowcase = shift.toLowerCase();
while (scan.hasNext()) {
String word = scan.nextLine();
String answer = "";
for (int i = 0; i < word.length(); i++)
{
char curChar = word.charAt(i);
char key = lowcase.charAt(i);
char newChar = (char)(curChar + key);
if (curChar >= 'A' && curChar <= 'Z'){
if (newChar > 'Z')
newChar = (char)(newChar-26);
}
else if (curChar >= 'a' && curChar <= 'z') {
if (newChar > 'z')
newChar = (char)(newChar - 26);
}
}
System.out.println("Encoded: " + answer);
}
}
}
любая помощь приветствуется благодаря