Java文件IO:如何提取文本文件特定列数据计算平均值
Hey there! I totally get where you're coming from—Java intro course assignments can feel overwhelming when all the solutions you find use advanced file IO stuff that's way beyond what you've learned so far. Let's break this down into a simple, beginner-friendly approach that sticks to basic tools you've probably covered in class.
Let's assume your text file has lines with multiple columns (we'll use space-separated values as an example, like 10 25 30 where 25 is the middle column). Here's a step-by-step implementation using the Scanner class—something almost every intro Java course teaches:
Step 1: Sample File Structure
First, let's say your input file (data.txt) looks like this:
5 12 19
8 24 30
10 18 22
3 30 45
Step 2: Full Code Implementation
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class MiddleColumnAverage { public static void main(String[] args) { // Point to your text file (update the path if needed) File inputFile = new File("data.txt"); Scanner fileScanner = null; int valueCount = 0; double totalSum = 0.0; try { // Initialize scanner to read the file fileScanner = new Scanner(inputFile); // Read each line one by one while (fileScanner.hasNextLine()) { String line = fileScanner.nextLine(); // Split the line into individual columns using space as separator String[] columns = line.split(" "); // Make sure the line has at least 3 columns to avoid errors if (columns.length >= 3) { // Grab the middle column (index 1, since Java uses 0-based indexing) double middleValue = Double.parseDouble(columns[1]); totalSum += middleValue; valueCount++; } } } catch (FileNotFoundException e) { // Basic error handling for missing files System.out.println("Oops! Couldn't find the file. Check your file path."); e.printStackTrace(); } finally { // Always close the scanner to free up resources if (fileScanner != null) { fileScanner.close(); } } // Calculate and print the average if (valueCount > 0) { double average = totalSum / valueCount; System.out.println("Average of the middle column: " + average); } else { System.out.println("No valid data found in the file."); } } }
Key Notes for Beginners
- Why
Scanner? It's the go-to tool for reading text files in intro courses—no need for complex classes likeBufferedReaderunless you've already covered them. - Column Indexing: Java uses 0-based indexing, so if your middle column is the second one (when counting 1,2,3), it lives at index
1. Adjust this number if your file has more columns. - Separator Adjustment: If your columns are separated by tabs instead of spaces, change
split(" ")tosplit("\t"). - Error Handling: The
try-catchblock catches the case where the file can't be found—simple enough for a beginner assignment but important to include.
Quick Adjustments
- If your middle column values are integers instead of decimals, swap
doublewithintandDouble.parseDoublewithInteger.parseInt. - Update the file path: If your file is in a subfolder (like
files/data.txt), use that full path instead of just the filename.
内容的提问来源于stack exchange,提问作者jameyb

