Java主方法与文件读取代码报错求助
问题分析与修复方案
核心错误点
- 方法嵌套定义非法:Java不允许在方法内部定义另一个方法,你在
main方法里嵌套的name静态方法是语法错误,直接导致编译失败。 - 未处理IO受检异常:读取文件时,
File构造和Scanner初始化可能抛出FileNotFoundException,必须显式捕获或声明抛出该异常。 - 资源未释放:
Scanner属于IO资源,使用后未关闭会造成资源泄漏。 - 逻辑未执行:即使方法定义正确,你也没有在
main方法中调用name方法,读取文件的逻辑根本不会运行。
修正后的代码
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Submission { public static void main(String[] args) { // 调用读取文件的方法 readTallFile(); } // 将文件读取逻辑提取为类级别的静态方法 public static void readTallFile() { // 使用try-with-resources自动关闭Scanner资源(Java 7+支持) try (Scanner scanner = new Scanner(new File("tall.txt"))) { int[] tall = new int[100]; int i = 0; // 增加数组边界判断,避免索引越界 while (scanner.hasNextInt() && i < tall.length) { tall[i++] = scanner.nextInt(); } // 可选:打印读取结果验证 System.out.println("成功读取 " + i + " 个整数"); } catch (FileNotFoundException e) { // 处理文件不存在的异常 System.err.println("错误:找不到文件 tall.txt - " + e.getMessage()); } } }
额外说明
- 方法必须定义在类的直接作用域下,不能嵌套在其他方法内部,这是Java的语法规则。
- try-with-resources语法会自动实现资源的关闭,比传统的try-finally更简洁安全。
- 增加数组边界判断是为了避免当文件中的整数数量超过100时,出现
ArrayIndexOutOfBoundsException。
内容的提问来源于stack exchange,提问作者Deniz Gok
相关产品推荐
相关产品推荐

