這是一個凱撒密碼,在調試時我發現這個循環運行的次數超過了 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
提交
取消