猿问

Java Enhanced Caesar Cipher:了解for循环行为的问题

这是一个凯撒密码,在调试时我发现这个循环运行的次数超过了 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;



}


翻阅古今
浏览 195回答 1
1回答

慕沐林林

听起来for可以用以下行完全替换内循环:modShiftKey=(key+mod);然后可以在第一个 for 循环之前添加一个新的 for 循环:String text = "";for (int k = 1; k <= mod; k++) {&nbsp; &nbsp; System.out.print("" + k + (k == mod ? " " : ","));}(当然,假设您不想在text变量中存储 1、2、3、4 )
随时随地看视频慕课网APP

相关分类

Java
我要回答