使用ceaser密码在java上加密
请告诉我代码有什么问题。每次我运行代码时,我都会得到一个Arrayoutofboundexception错误,所以哪里出了问题请帮助,我想我用了一个好的算法来生成一个密文,所以请帮助并忘记空格,假设单词没有空格。这只是一个针对大三学生的学校项目使用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;
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;ii
是一个介于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中的哪几行