我试图编写一个基本的密钥密码,但我遇到了一个问题,for循环没有阅读最后一个字符:
public static void main(String[] args) {
BasicEncrypt.encrypt("abcdef", 1);}
public class BasicEncrypt {
public static String encrypt(String text, int rule) {
String code = "";
int i;
for(i = 0; i < text.length() -1; i++) {
if ((text.charAt(i) + rule) > 255) {
code = code + (char) (text.charAt(i) + rule - 255);
} else if (text.charAt(i) + rule <= 255) {
code = code + text.charAt(i) + rule);
}
}
return code;
}
}
代码返回除了最后一个字符以外的所有字符。如果输入字符串是一个字符('a'),则返回空。
我将循环改为下面的代码,并得到一个索引越界错误(这是ofc有意义的):
for(i = 0; i < text.length(); i++)
我知道这是一个非常基本的问题,但我找了大约一个小时后,在这里找不到我的答案。
2条答案
按热度按时间oxiaedzo1#
正确的
for
循环是for(i = 0; i < text.length(); i++)
。到
在你改正之后,你移动了你犯过的错误一次,又犯了同样的错误。四次。这
当
rule
大于0
时,i + rule
总是会给予你一个越界异常,因为i
是text
中所有有效索引的范围。让你的生活更简单就像
dwbf0jvd2#
如果你想迭代一个名为text的字符串,你必须从0开始到text.length-1,在这种情况下,你的条件将像这样:i〈= text.length否则,如果你只使用“〈”,最后一个索引不计数,它应该是这样的:for(i = 0; i〈text.length();i++)