-3

我正在编写一个程序来解密已加密的文本文件。我的缓冲阅读器似乎只读取文本文件的第一行?我的解密函数()仅打印出仅正确解密的第一行就表明了这一点。我附上了我的代码片段,但我不确定哪里出错了。b变量是彻底解密代码,与文件读取无关

    BufferedReader br = new BufferedReader(new FileReader("decryptthis.txt"));
    String message;
    while (((message = br.readLine()) != null))
    {
        message = message.toUpperCase();
        while (b <= 26)
        {
            decryption(message, b);
            b++;
        }

这部分在我的主要功能中

public static String decryption(String message, int b) 

这就是我的解密功能所采用的

我想我需要它进入循环并不断地向我的解密函数提供这些行,但是我认为这是由 != null 部分完成的

任何帮助将不胜感激。谢谢

4

1 回答 1

1

首先,尝试将正确的代码行放到相应的方法中。您的问题不在“阅读”部分。如何确认?只需打印缓冲区读取的行。之后,调用内部包含所有解密代码的解密方法。

例如,

final var path = Paths.get("PathToYourTxt");

try (var lines = Files.lines(path)) 
{
    lines.forEach(System.out::println);
} 
catch (IOException e) 
{
    e.printStackTrace();
}

这将打印txt的内容。(核实)

在你的情况下,

final var path = Paths.get("PathToYourTxt");

try (var lines = Files.lines(path)) 
{
    lines.forEach(line -> decryption(line));
} 
catch (IOException e) 
{
    e.printStackTrace();
}
}

public static void decryption(String message) 
{
    // put your code here with all your checks with that B variable
}

每种方法都在做某事。尽量不要停止阅读。只需根据您的条件中止方法中的字符串

于 2021-04-18T09:59:55.750 回答