我一直试图让这段代码正常工作,但我不断收到StringIndexOutOfBoundsException
错误。任何人都可以帮我找到解决这个问题的方法吗?我一直试图弄乱索引。第一个while循环单独运行很好,但是当我把第二个循环放进香蕉时。
public static String encrypt(int key, String name) {
String encryptedName = "";
int i = 0;
while((int) name.charAt(i) > 64 && (int) name.charAt(i) < 91) {
if((int)name.charAt(i) + key > 90 ) {
encryptedName += (char) ((int) name.charAt(i) + key - 26);
} else {
encryptedName += (char) ((int) name.charAt(i) + key);
}
i++;
}
i = 0;
while((int) name.charAt(i) > 96 && (int) name.charAt(i+1) < 123 && i < name.length() - 1) {
System.out.println(i);
i++;
if((int)name.charAt(i) + key > 122) {
encryptedName += (char) ((int) name.charAt(i) + key - 26);
} else {
encryptedName += (char) ((int) name.charAt(i) + key);
}
}
return encryptedName;
}
}
以下是我遇到的错误:
java.lang.StringIndexOutOfBoundsException: String index out of range: 7
at java.lang.String.charAt(String.java:658)
at Cipher.encrypt(Cipher.java:61)
at Cipher.main(Cipher.java:26)
答案 0 :(得分:0)
你可能需要添加一个条件,以便在我变得太大之前突破循环。
E.g。
while (i < name.length() && ...)
并且对于第二个循环,添加
while (i + 1 < name.length && ...)
答案 1 :(得分:0)
在第二个while循环中,尝试将i ++移动到while循环的底部。