(学生)使用while循环捕获并重新提示无效的用户条目

时间:2014-03-20 18:56:14

标签: java

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

(换行时间隔为双倍)

开始计划

您是否希望编码或解码:(用户进入控制台......例如,让我们使用编码)

输入输入文件的名称:(用户在此输入文件名称)

输入输出文件的名称:(用户输入程序创建的输出文件的名称)

计划结束

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

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

我知道我想使用while loop来解决这个问题,但是在确定哪里(尝试/捕获部分似乎给我带来麻烦)时遇到了很多麻烦。任何人都可以向我提供有关实现while loop的最佳方法的指导,以便用户有无限数量的选项来输入输出文件的名称吗?非常感谢。

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

    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;
}

1 个答案:

答案 0 :(得分:1)

要检查文件是否存在,您可以使用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 - 块提取到班级中的新功能。