这是一个凯撒密码,在调试时我发现这个循环运行的次数超过了 mod 的值。我希望输出1,2,3,4 fklm然后停止。有问题的循环是:for(int k=1;k<=mod;k++).方法中使用的字符串是"abcd".这是一个凯撒密码,在调试时我发现这个循环运行的次数超过了 mod 的值。我希望输出1,2,3,4 fklm然后停止。有问题的循环是:for(int k=1;k<=mod;k++). 方法中使用的字符串是"abcd".输出图像包含在下面public static String encrypt(String plainText){ plainText=plainText.toLowerCase(); String text=""; for(int i=0;i<plainText.length();i++) { if(i==0) { int letterPosition=ALPHABET.indexOf(plainText.charAt(i)); int shiftValue=(key+letterPosition)%26; char encrypted=ALPHABET.charAt(shiftValue); text+=encrypted; } else if(i>0) { int letterPosition=ALPHABET.indexOf(plainText.charAt(i)); for(int k=1;k<=mod;k++) { modShiftKey=(key+k); System.out.println(k); } int shiftValue=(modShiftKey+letterPosition)%26; char encrypted=ALPHABET.charAt(shiftValue); text+=encrypted; } } return text;}
1 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
听起来for可以用以下行完全替换内循环:
modShiftKey=(key+mod);
然后可以在第一个 for 循环之前添加一个新的 for 循环:
String text = "";
for (int k = 1; k <= mod; k++) {
System.out.print("" + k + (k == mod ? " " : ","));
}
(当然,假设您不想在text变量中存储 1、2、3、4 )
添加回答
举报
0/150
提交
取消