下面你会看到一些我遇到问题的代码。基本思想是将一个现有文本文件简单复制到新文本文件,但如果存在新文本文件,则会给出三个选项。其他开关盒完美无瑕地工作,但这第三个也是最后一个案例根本无法完成!
基本上这是一个选择,如果先前选择的文件名已经存在,你可以选择一个新的文件名,但是当你选择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());
}
答案 0 :(得分:4)
在try / catch之前查看retryName; retryName包含什么?我敢打赌,它包含一个你不会捕获的新行作为代码的一部分,让用户可以在代码中选择前面的选项。
答案 1 :(得分:4)
正如Ahmed建议的那样,你可能正在使用诸如next
和nextInt
之类的方法,然后在调用nextLine
之前忘记丢弃行终止符。
尝试将其作为解决方法:
keyboard.nextLine(); // discard the line break
String retryName = keyboard.nextLine();