如何将TXT文档中的数值存入Java数组?已尝试方案均无效
我来帮你搞定这个问题!从你贴的代码片段来看,应该是卡在了「没正确初始化数组长度」,还有可能打错了变量名(比如你写的in...估计是input的笔误)。下面给你两个靠谱的解决方案,一步步来:
方案一:先统计个数再初始化数组(适合确定文件全是整数的场景)
这种方式需要先遍历一遍文件统计整数数量,再初始化对应长度的数组,然后重新读取文件把数值存进去:
import java.util.Scanner; import java.io.File; import java.io.IOException; public class example{ public static void main(String[] args) throws IOException{ // 第一步:统计文件里的整数个数 Scanner countScanner = new Scanner(new File("integers.txt")); int count = 0; // 用hasNextInt()更精准,只识别整数,避免非整数内容干扰 while(countScanner.hasNextInt()){ countScanner.nextInt(); count++; } countScanner.close(); // 用完记得关闭资源,避免泄漏 // 第二步:初始化对应长度的数组,再读取数据存入 int[] numbersArray = new int[count]; Scanner dataScanner = new Scanner(new File("integers.txt")); int index = 0; while(dataScanner.hasNextInt()){ numbersArray[index] = dataScanner.nextInt(); index++; } dataScanner.close(); // 现在就可以用数组做求和、求平均啦 // 示例:计算总和 int sum = 0; for(int num : numbersArray){ sum += num; } // 示例:计算平均值(转成double避免整数除法的精度丢失) double average = (double) sum / count; // 输出结果验证 System.out.println("数组中的元素:"); for(int num : numbersArray){ System.out.print(num + " "); } System.out.println("\n总和:" + sum); System.out.println("平均值:" + average); } }
方案二:用动态集合ArrayList(更灵活,不用提前统计个数)
如果不确定文件里有多少个整数,或者不想两次读取文件,可以用ArrayList动态存储元素,之后再转成数组(如果需要的话):
import java.util.ArrayList; import java.util.Scanner; import java.io.File; import java.io.IOException; public class example{ public static void main(String[] args) throws IOException{ ArrayList<Integer> numList = new ArrayList<>(); Scanner input = new Scanner(new File("integers.txt")); // 直接把读取到的整数添加到集合里 while(input.hasNextInt()){ numList.add(input.nextInt()); } input.close(); // 如果需要转成int数组的话 int[] numbersArray = new int[numList.size()]; for(int i=0; i<numList.size(); i++){ numbersArray[i] = numList.get(i); } // 求和、求平均操作和之前一致 int sum = 0; for(int num : numbersArray){ sum += num; } double average = (double) sum / numList.size(); System.out.println("总和:" + sum); System.out.println("平均值:" + average); } }
关键注意点
- 尽量用
hasNextInt()代替hasNext(),这样可以过滤掉文件里的非整数内容,避免报错 - 用完Scanner一定要调用
close()关闭资源 - 计算平均值时要把总和转成
double,不然整数除法会直接舍去小数部分,导致结果不准确
内容的提问来源于stack exchange,提问作者CSJerry
相关产品推荐
相关产品推荐

