Ich mache einen Caesar Cipher Auftrag für meine Klasse 11 Informatik-Klasse. Ich habe viele Male über meinen Code nachgedacht und ihn verändert, aber nichts, was ich mache, funktioniert und ich verstehe nicht warum.Caesar Cipher Code Fehler: String-Index außerhalb der Grenzen
Der Fehler Es ist mir gibt, ist java.lang.StringIndexOutOfBoundsException
import java.util.*;
//Caesar Cipher
public class CCTry1
{
public static void main (String [] args)
{
//scanner
Scanner scanner = new Scanner(System.in);
Scanner scanner2 = new Scanner(System.in);
//make an array with all the letters
char[] alphabet = {'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'};
//prompt user for a message
System.out.println("Enter your message.");
String message = scanner.nextLine();
//*******ENCRYPTING******
System.out.println("Enter your shift number.");
int shift = scanner2.nextInt();
//find index of each letter of the user's message, then add the shift number
//to obtain the new message
char newletter;
//for loop to encrypt
for(int i=0; i<26; i++)
{
//take the i letter
char letter = message.charAt(i);
//check if that letter = a
if (letter == alphabet[i])
{
//if letter = a, then the new letter is a+shift
newletter = alphabet[i+shift];
//if letter is capitalized, convert it to a capital then print
if(Character.isUpperCase(letter))
{
System.out.print(Character.toUpperCase(newletter));
}
//else, just print it as is
else
{
System.out.print(newletter);
}
}
}
}
}
Sie durchlaufen das Alphabet und verwenden den gleichen for-Schleifenindex, i, um über Ihre Nachricht "message.charAt (i);" zu iterieren. Tu das nicht. –