gpt4 book ai didi

java - 如何让 Java 识别在 try block 内声明的变量?

转载 作者:行者123 更新时间:2023-12-01 17:16:25 24 4
gpt4 key购买 nike

我正在制作一个加密项目,我大部分时间都在工作。我正在从文件中读取明文并对其进行加密,然后将其写入另一个文本文件。我有同样的解密东西。我已经完成了这项工作,但我对读取和写入文件的 try 和 catch 方法感到有点困惑。我在一种方法中有两个尝试和捕获,第二个尝试方法无法识别我的“解密”变量。我该如何处理这个问题?这是我的代码:

public static void decrypt(String pathname)
{
File file = new File(pathname);
Scanner input = null;
try
{
input = new Scanner(file);
String tempEncrypted = input.nextLine();
StringBuffer encrypted = new StringBuffer(tempEncrypted);

StringBuffer decrypted = new StringBuffer("");
int shiftAmount = (int)encrypted.charAt(0);

for(int i = 1; i < encrypted.length(); i++)
{
int decChar = ((int)encrypted.charAt(i) - shiftAmount);
while((int)decChar < 32)
{
decChar+=95;
}
decrypted.append((char)decChar);
}
}
catch(FileNotFoundException ex)
{
System.out.println("*** Cannot open " + pathname + " ***");
System.exit(1);
}
try {
BufferedWriter out = new BufferedWriter(new FileWriter("decrypted.txt"));
for(int j = 0; j < decrypted.length(); j++)
{
out.write(decrypted.charAt(j));
}
out.close();
}
catch (IOException e) {}


}

谢谢,如有任何帮助,我们将不胜感激。

最佳答案

您错过了 try/catch block 的要点。如果抛出异常,则说明发生了错误。 您不想从失败的 try block 内部检索信息

相反,只需将您的 try block 组合成一个 try/catch,如下所示:

public static void decrypt(String pathname)
{
File file = new File(pathname);
Scanner input = null;
try
{
input = new Scanner(file);
String tempEncrypted = input.nextLine();
StringBuffer encrypted = new StringBuffer(tempEncrypted);

StringBuffer decrypted = new StringBuffer("");
int shiftAmount = (int)encrypted.charAt(0);

for(int i = 1; i < encrypted.length(); i++)
{
int decChar = ((int)encrypted.charAt(i) - shiftAmount);
while((int)decChar < 32)
{
decChar+=95;
}
decrypted.append((char)decChar);
}

BufferedWriter out = new BufferedWriter(new FileWriter("decrypted.txt"));
for(int j = 0; j < decrypted.length(); j++)
{
out.write(decrypted.charAt(j));
}
out.close();
}
catch(FileNotFoundException ex)
{
System.out.println("*** Cannot open " + pathname + " ***");
System.exit(1);
}
catch (IOException e) {}

}

关于java - 如何让 Java 识别在 try block 内声明的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21867775/

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