我正在尝试使用我们在学校学到的一些基本代码来制作加密器。我已经设法到达某个地方(我想),但由于某种原因,我似乎得到了这个public void Encryption() {
String Password = "CodingIsHard";
String answer = "";
for (int i = 0; i < Password.length(); i++) {
answer = Character.toString(Password.charAt(i + '5'));
}
System.out.println(answer);
}
public static void main(String[] args) {
PasswordGenerator GP = new PasswordGenerator();
GP.Encryption();
}
错误。谁能告诉我为什么?
Promise.all()
答案 0 :(得分:2)
'5'
是一个角色,而不是五号。在ASCII中,字符5
的值为53,因此当i
为零时,您尝试访问索引0 + 53
,该字符串超出了字符串范围。您可能希望将添加移到charAt()
括号之外。
答案 1 :(得分:1)
您要将'5'
添加到charAt()
要检索的索引中,请将代码更改为:
public void Encryption() {
String Password = "CodingIsHard";
String answer = "";
for (int i = 0; i < Password.length(); i++) {
answer = Character.toString(Password.charAt(i) + '5');
}
System.out.println(answer);
}
public static void main(String[] args) {
PasswordGenerator GP = new PasswordGenerator();
GP.Encryption();
}
答案 2 :(得分:0)
使用charAt时要小心。你的字符串“CodingIsHard”只有12个字母,你在For循环中所做的总和可以使这个数字高于字符串中的字母数。例如,如果i = 10且你总和为5,则i = 15.并且你在12个字母的字符串中没有位置15!此外,Java正在考虑您的'5'的ASCII值,53。考虑使用整数值(除非您的意图)。