如何将字符串数组中的数字字符串转为int?文件读取赋值报错求助
解决方法
核心问题原因
fields数组的元素是字符串类型,哪怕内容是数字(比如"70"),也不能直接赋值给int类型的numfields数组——Java不会自动完成字符串到整数的隐式转换,所以抛出类型不匹配错误。
直接修复代码
用Integer.parseInt()方法把字符串形式的数字转为int类型,修改报错的代码行:
numfields[0] = Integer.parseInt(fields[2]); numfields[1] = Integer.parseInt(fields[3]); numfields[2] = Integer.parseInt(fields[4]);
额外注意事项
- 分隔符匹配问题:你代码里用
split("\t")按制表符拆分,但给出的文件内容显示是多个空格分隔。如果实际文件是空格分隔,建议改用split("\\s+")(匹配任意数量的空白字符,包括空格、制表符),避免拆分出空字符串或索引越界:fields = line.split("\\s+"); - 异常处理:如果文件中存在非数字的内容,
Integer.parseInt()会抛出NumberFormatException。如果需要健壮性,可以加try-catch块捕获异常:try { numfields[0] = Integer.parseInt(fields[2]); numfields[1] = Integer.parseInt(fields[3]); numfields[2] = Integer.parseInt(fields[4]); } catch (NumberFormatException e) { // 处理数字格式错误,比如打印日志或跳过当前行 System.err.println("当前行数字格式错误:" + line); }
内容的提问来源于stack exchange,提问作者Jah
相关产品推荐
相关产品推荐

