gpt4 book ai didi

java - (学生)使用 while 循环捕获并重新提示无效的用户输入

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:22 25 4
gpt4 key购买 nike

我正在努力完成一个使用替换密码来编码和解码 txt 文件的程序。经过相当多的工作,我的程序几乎完成了。该程序首先询问用户是否要对文件进行编码或解码。回答这个问题后,程序会提示用户输入正在输入的文件的名称(用于编码/解码),以及程序将把新的编码/解码文本发送到的输出文件的名称。它看起来有点像这样:

(双倍行距)

程序开始

你想编码还是解码:(用户在控制台输入...让我们使用编码为例)

Enter name of input file: (用户在这里输入文件名)

Enter name of output file:(用户输入程序要创建的输出文件的名称)

程序结束

一切正常。我已经创建了各种编码和解码方法,但考虑到其余部分应该很容易的部分遇到了问题。

在我在较大程序中编写的方法中,我有一个提示用户输入输出文件的名称(粘贴在下面)。但是,我想写的是,如果用户输入一个已经存在的文件的名称,而不是覆盖它,我想提示用户并询问他/她是否确定他们要通过单击覆盖文件“y”或“n”(将使用 toLowerCase() 方法来确保大小写值正确。

我知道我想为此使用一个while 循环,但是我很难弄清楚在哪里(try/catch 部分似乎给我带来了麻烦)。任何人都可以为我提供关于实现我的 while 循环 的最佳方法的指导,以便用户在输入输出文件名称时有无限数量的选项吗?非常感谢。

(我也可以随时粘贴整个代码......只是看起来好像不需要)。

    public static PrintStream getOutputPrintStream(Scanner console){
PrintStream output = null;
while (output == null) {
System.out.print("Enter output file: ");
String fileName = console.next();
try {
output = new PrintStream(new File(fileName));
}
catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}

}
return output;
}

最佳答案

要检查文件是否存在,您可以使用 exists() 方法。因此,您需要先创建一个 File 对象。喜欢

File f = new File(fileName);
if(!f.exists()){ // if the file does not exist
// Your try-catch block here
}else{ // this means that there is a file with the given name
System.out.println("You really want to override? y/n");
String r = console.next();
if(r.toLowerCase().equals("y")){
// Your try-catch-block again
}else{
// Nothing here
// to restart the loop.
}
}

最好是在

String fileName = console.next();

无论如何,您甚至可以将 try-catch block 提取到您的类中的新函数中。

关于java - (学生)使用 while 循环捕获并重新提示无效的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22542558/

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