我一直在試圖讓這段代碼正常工作,但是我一直在收到StringIndexOutOfBoundsException
錯誤。任何人都可以幫我找到解決這個問題的方法嗎?我一直在試圖弄亂索引。第一個while循環單獨運行良好,但是當我把第二個循環用於香蕉時。如何修復StringIndexOutOfBoundsException?
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)
你能解釋你的代碼,並且包含代碼失敗的輸入嗎 – Bajal
代碼的要點是從用戶處獲取第一名,第二名和第三名。然後它將通過使用該鍵打印出加密的名字以上字母表。大寫字符需要保持大寫,小寫字母保持較低。你不能走出字母表或得到任何數字。對於關鍵我使用12和名稱我會使用雷蒙德 所以,如果名稱以Z開頭,關鍵是1你會得到A作爲第一個字母等等等等 –
哪個字符串是拋出索引錯誤?輸入明文,密鑰或密文?從你給我們我們不能確定第61行包含。 – rossum