-6 java compiler-errors java.util.scanner java-io
全部!我在扫描仪/传递文本文件作为方法的参数时遇到问题。如果我在 main 中创建一个 Scanner,我就可以做所有事情。
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class App {
public static void main(String[] args){
File file = new File([FILEPATH]);
Scanner inputFile = new Scanner(file);
...
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将文本文件传递给方法并在那里创建扫描仪时,我收到 FileNotFoundException
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class App {
public static void main(String[] args){
File file = new File([FILEPATH]);
method(file);
}
public static String method(File file){
Scanner inputFile = new Scanner(file); //This is where I get the error :(
...
Run Code Online (Sandbox Code Playgroud)
问题的提示特意说参数必须是文件,所以我不能改成String参数来传递文件路径。
我使用 .getPath() 来确保我的方法中文件的文件路径与 main 中文件的文件路径匹配,而且确实如此。我不确定需要修复什么。非常感谢任何帮助!
编辑; 添加带有我的完整代码和每个版本的输出的屏幕截图,以便人们可以验证我的更改。
您仔细阅读错误信息了吗?
它没有说“找不到文件” - 它说:“未解决的编译问题:未处理的异常类型 FileNotFoundException”。
这是因为new Scanner(file)声明抛出 aFileNotFoundException并且您method()必须处理该异常或声明它可能抛出 a FileNotFoundException(通过将其声明为method(File file) throws FileNotFoundException {...}
请注意,将方法声明为method(File file) throws FileNotFoundException {...}委托有义务处理异常或将其声明为向 的调用者抛出的异常method()。这意味着您的main()方法必须要么处理,FileNotFoundException要么您需要将您的main()方法声明为
public static void main(String[] args) throws FileNotFoundException {}
Run Code Online (Sandbox Code Playgroud)
或者
public static void main(String[] args) throws IOException {}
Run Code Online (Sandbox Code Playgroud)
或者
public static void main(String[] args) throws Exception {}`)
Run Code Online (Sandbox Code Playgroud)
为什么编译器不会抱怨版本有效?
这是因为在有效的版本中,您将该main()方法声明为public static void main(String[] args) throws Exception {}- Java 编译器对此感到满意:该声明告诉它在 的体内抛出的任何异常main()都是可接受的。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |