错误的密码凯撒Java程序



我用java编写了一个凯撒密码程序,该程序将存储在我的计算机中的文本文件作为输入,并根据用户提供的密钥值对其进行加密。然后这个加密文件必须以文本文件格式保存回计算机上。我一直试图找到我在哪里走错了,但我想我需要从一个人更有经验的java一点帮助。下面是我的代码:

import java.util.Scanner;
import java.io.*;
import java.lang.*;
public class trial
{
    public static void main(String arg[])
    {
        String textFile="plaintext.txt";
        String cipheredFile=" ciphertext.txt";
        String line= null;
        FileReader fileReader=new FileReader(textFile);
        BufferedReader bufferedReader=new BufferedReader(fileReader);
        FileWriter fileWriter= new FileWriter(cipheredFile,true);
        BufferedWriter bufferedWriter= new BufferedWriter(fileWriter);

        int swvalue;
        Scanner input= new Scanner(System.in);
        System.out.println("Select 1: Encrypt, 2: Decrypt, 3: Get Frequency");
        int msg= input.nextInt();
        swvalue= Integer.valueOf(msg);
        switch(swvalue)

        {
        case 1:
            System.out.println("Encrypting the file");
            System.out.println(" Please enter a value for key");
            int keyvalue= input.nextInt();
            String[]  filearray=null;
            while(( line=bufferedReader.readLine())!=null)
            { 
            char[] toEncrypt=line.toCharArray();
                for(int i=0;i<toEncrypt.length;i++)
                {
                int charPosition= indexOf(line.charAt(i));
                int finalValue=(keyValue+charPosition)%26;
                char replaceValue=line.charAt(finalValue);
                line+=replaceValue;

                }

             bufferedWriter.write(line);
             bufferedWriter.newLine();
            }
            bufferedReader.close();
            bufferedWriter.close();
            break;

        case 2:

            System.out.println("Decrypt the file");
            break;

        case 3:
            System.out.println(" Get frequency");
            break;
        }
    }
}

这是应该旋转的位置:

int charPosition= indexOf(line.charAt(i));
int finalValue=(keyValue+charPosition)%26;

但这不是旋转!

您应该将的值:

移动,而不是移动在字符串中的位置
int value = line.charAt(i);
int finalValue=(keyValue+value)%26;

最新更新