请我帮忙解决该代码的问题。每次我运行该代码我得到一个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]);
}
}
}
答案 0 :(得分:0)
encryption
是0到25之间的数字(包括),encryption[i]
是一个长度未知的数组(输入长度,但我们不知道输入),所以{{1本质上是错误的。
您的意思是encryption[j] = result;
吗?
请注意,第二组循环颠倒了i
和j
!!!的含义
糟糕的风格。很混乱。显然,甚至对你来说。
答案 1 :(得分:0)
你的主循环应该是这样的......
for (int j = 0 ; j < target Text.Length() ; j++){
EncryptedText [j] = (((targetText[j] - 'a') + key ) % 26) + 'a';
}
很抱歉格式化我在移动设备上...
编辑:修复格式
Edit2:行EncryptText[i] = result;
也可能是假设您的明文长度小于26个字符而给出错误。我认为你的意思不是安德烈亚斯所建议的EncryptText[j] = result;
。