代码无法将整数存入temps数组,inFile1.nextInt()语句报错求助
解决
nextInt()读取带格式整数数组时的输入不匹配问题 你遇到的问题根源很明确:你的文件内容是带方括号[]和逗号,的数组格式(比如[89, 111, 117,...]),但Scanner.nextInt()只能识别连续的纯数字字符。当它碰到[、,这类非数字符号时,会直接抛出InputMismatchException,自然没法把整数存入temps数组。
下面给你一套直接可行的修复方案,核心是先清理文件里的格式字符,再提取数字:
修复步骤与示例代码
思路拆解
- 先读取整个文件内容,一次性拿到所有文本
- 清理掉方括号、逗号这些格式符号,只保留数字和分隔用的空格
- 把处理后的字符串拆成单个数字字符串,再逐个转换成整数存入数组
可运行的代码示例
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
相关产品推荐
相关产品推荐

