使用ceaser密码在java上加密

使用ceaser密码在java上加密,java,arrays,Java,Arrays,请告诉我代码有什么问题。每次我运行代码时,我都会得到一个Arrayoutofboundexception错误,所以哪里出了问题请帮助,我想我用了一个好的算法来生成一个密文,所以请帮助并忘记空格,假设单词没有空格。这只是一个针对大三学生的学校项目 import java.util.Scanner; public class App { public static void main(String[] args) { int key = 11; int result = 0;

请告诉我代码有什么问题。每次我运行代码时,我都会得到一个Arrayoutofboundexception错误,所以哪里出了问题请帮助,我想我用了一个好的算法来生成一个密文,所以请帮助并忘记空格,假设单词没有空格。这只是一个针对大三学生的学校项目

import java.util.Scanner;

public class App {

public static void main(String[] args) {
    int key = 11;
    int result = 0;

    char Alpha[] = { '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' };
    Scanner s = new Scanner(System.in);
    System.out.println("please enter text to be encrypted :");
    String plainText = s.nextLine();
    char targetText[] = plainText.toCharArray();
    char EncryptText[] = new char[plainText.length()];
    int encryption[] = new int[plainText.length()];
    for (int i = 0; i < Alpha.length; i++) {
        for (int j = 0; j < targetText.length; j++) {
            if (targetText[j] == Alpha[i]) {
                try {
                    result = (j + key) % Alpha.length;
                    if (result < 0) {
                        result += Alpha.length;
                    } else {
                        encryption[i] = result;
                    }
                } catch (Exception e) {
                    System.out.println("Error");
                }
            }
        }
    }
    for (int i = 0; i < encryption.length; i++) {
        for (int j = 0; j < Alpha.length; j++) {

            if (encryption[i] == j) {
                try {
                    EncryptText[i] = Alpha[j];
                } catch (Exception e) {
                    System.out.println("Error");
                }
            }
        }

    }

    for (int i = 0; i <EncryptText.length; i++) {
        System.out.println("the encryptedText is " + EncryptText[i]);
    }

}
import java.util.Scanner;
公共类应用程序{
公共静态void main(字符串[]args){
int键=11;
int结果=0;
字符Alpha[]={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’};
扫描仪s=新的扫描仪(System.in);
System.out.println(“请输入要加密的文本:”);
字符串纯文本=s.nextLine();
char targetText[]=纯文本.toCharArray();
字符EncryptText[]=新字符[plainText.length()];
int encryption[]=new int[plainText.length()];
for(int i=0;i对于(int i=0;i
i
是一个介于0和25之间(包括0和25)的数字,
encryption
是一个长度未知的数组(输入长度,但我们不知道输入),因此
encryption[i]
本质上是错误的

你是说
加密[j]=result;

请注意,第二组循环颠倒了
i
j
的含义!!!!!

糟糕的风格。非常混乱。显然,即使对你来说也是如此。

你的主循环应该是这样的

for (int j = 0 ; j < target Text.Length() ; j++){
     EncryptedText [j] = (((targetText[j] - 'a') + key ) % 26) + 'a'; 
}
for(int j=0;j
对不起,我在手机上

编辑:固定格式


Edit2:假设明文长度小于26个字符,那么
encryptext[i]=result;
这一行可能会给您带来错误。我想您的意思是不是
encryptext[j]=结果;
如Andreas所建议。

哪一行获得了
ArrayIndexOutOfBoundsException
?输入是什么?try catch中的哪几行