You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:12:25