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

代码无法将整数存入temps数组,inFile1.nextInt()语句报错求助

解决nextInt()读取带格式整数数组时的输入不匹配问题

你遇到的问题根源很明确:你的文件内容是带方括号[]和逗号,的数组格式(比如[89, 111, 117,...]),但Scanner.nextInt()只能识别连续的纯数字字符。当它碰到[、,这类非数字符号时,会直接抛出InputMismatchException,自然没法把整数存入temps数组。

下面给你一套直接可行的修复方案,核心是先清理文件里的格式字符,再提取数字:

修复步骤与示例代码

思路拆解

  1. 先读取整个文件内容,一次性拿到所有文本
  2. 清理掉方括号、逗号这些格式符号,只保留数字和分隔用的空格
  3. 把处理后的字符串拆成单个数字字符串,再逐个转换成整数存入数组

可运行的代码示例

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Arrays;

public class TempArrayLoader {
    public static void main(String[] args) {
        try {
            // 读取整个文件的内容为字符串
            String rawContent = Files.readString(new File("你的文件路径.txt").toPath());
            
            // 清理格式:去掉[]和逗号,把多空格换成单个空格
            String cleanedContent = rawContent.replaceAll("[\\[\\],]", "")
                                             .trim()
                                             .replaceAll("\\s+", " ");
            
            // 拆分成单个数字字符串
            String[] numStrArray = cleanedContent.split(" ");
            
            // 创建整数数组并完成转换
            int[] temps = new int[numStrArray.length];
            for (int i = 0; i < numStrArray.length; i++) {
                temps[i] = Integer.parseInt(numStrArray[i]);
            }
            
            // 验证结果
            System.out.println("成功存入数组的整数:" + Arrays.toString(temps));
        } catch (IOException e) {
            System.out.println("文件读取失败,请检查路径是否正确");
            e.printStackTrace();
        } catch (NumberFormatException e) {
            System.out.println("文件中存在无法转换为整数的内容");
            e.printStackTrace();
        }
    }
}

补充说明:为什么原代码会报错?

Scanner.nextInt()的工作逻辑是:跳过空白字符后,只读取连续的数字(包括正负号)来组成整数。当它遇到[或者,时,这些字符不属于整数的合法组成部分,程序会立刻判定输入不匹配,抛出异常终止读取流程,自然没法正确提取你需要的数字。

内容的提问来源于stack exchange,提问作者S.Hsieh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:52:30