gpt4 book ai didi

java - 有错误的密码凯撒java程序

转载 作者:太空宇宙 更新时间:2023-11-04 13:21:59 25 4
gpt4 key购买 nike

我用java编写了一个用于凯撒密码的程序,该程序将文本文件作为存储在我的计算机中的输入,并根据用户提供的 key 值对其进行加密。然后这个加密的文件必须以文本文件格式保存回计算机上。我一直在试图找出我出错的地方,但我想我需要一些在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;

关于java - 有错误的密码凯撒java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32980451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com