Java如何读取每行含2/4个数值的文件并将字符串数组转为数值传入类方法
实现方案
你当前代码里的split()方法参数写法有误,split()需要传入分隔符规则,要按空格拆分应该用inData.split("\\s+"),该规则可以匹配1个及以上的空白字符,兼容多个空格、制表符分隔的场景,也能自动过滤行首行尾的多余空格。
完整实现逻辑如下:
- 增加空行判断,跳过文件中的空白行
- 把拆分后的字符串数组逐个转换为目标数值类型(以下示例以整数为例,需要浮点数可自行替换转换方法)
- 捕获数值转换异常,避免非数值内容导致程序终止
- 根据数值数组长度调用对应处理方法
while(myReader.hasNextLine()) { String inData = myReader.nextLine(); // 跳过空行 if (inData.trim().isEmpty()) { continue; } // 按任意空白字符拆分字符串 String[] dataStrArr = inData.split("\\s+"); int[] numArr = new int[dataStrArr.length]; try { // 字符串转整数,需要浮点数的话替换为Double.parseDouble()即可 for (int i = 0; i < dataStrArr.length; i++) { numArr[i] = Integer.parseInt(dataStrArr[i]); } // 根据数值个数调用对应方法 if (numArr.length == 2) { // 替换为你自己的2参数处理方法 handleTwoValue(numArr[0], numArr[1]); } else if (numArr.length == 4) { // 替换为你自己的4参数处理方法 handleFourValue(numArr[0], numArr[1], numArr[2], numArr[3]); } else { // 不符合格式的行可以按需加日志或跳过 System.out.println("跳过不符合长度要求的行:" + inData); } } catch (NumberFormatException e) { // 处理行内存在非数值的异常情况 System.out.println("行内容存在非数值,已跳过:" + inData); } }
内容的提问来源于stack exchange,提问作者Hasan Radwan
相关产品推荐
相关产品推荐

