0

下面你会看到一些我遇到问题的代码。基本思想是将一个现有文本文件简单地复制到一个新文件中,但如果新文件存在,则为您提供三个选项。其他 switch 案例完美无缺,但是这第三个也是最后一个案例根本不能像我想要的那样工作!

基本上,如果先前选择的文件名已经存在,这是让您选择新文件名的选项,但是当您选择 3 作为选项时,它所做的只是首先打印出“键入新名称:”行并立即跳到FileNotFoundException抓住,完全绕过应该允许用户输入新名称的代码,但我不知道为什么。有什么建议么?

            System.out.println("Type a new name:");                 
            String retryName = keyboard.nextLine();                                     
            try
            {
                outputStream = new PrintWriter(retryName);
            }
            catch (FileNotFoundException e)
            {
                System.out.println("Error creating file " + retryName + "!");
                System.out.println("The program will now close.");
                System.exit(0);
            }
            while (inputStream.hasNextLine())
            {
                outputStream.println(inputStream.nextLine());                       
            }
4

2 回答 2

4

在尝试/捕获之前查看 retryName;retryName 包含什么?我敢打赌它包含一个新行,你没有将它作为代码的一部分捕获,它让用户在你的代码中更早地选择选项。

于 2013-05-18T23:29:05.367 回答
4

正如艾哈迈德所建议的那样,您可能正在使用诸如nextand之类的方法nextInt,然后在调用nextLine.

试试这个作为一种解决方法:

keyboard.nextLine(); // discard the line break 
String retryName = keyboard.nextLine(); 
于 2013-05-18T23:34:57.540 回答