首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 文件操作實戰:從文本讀取學生鉛筆價格並統計總價

     編輯:程式設計綜合問答

需求分析

文本文件每行格式:姓名 年齡 鉛筆數,單價 2 元。需讀取、計算每人總價、輸出明細及總計。

實體類設計


public class Student {
    private String name;
    private int age;
    private int pencilCount;
    private int totalPrice;  // pencilCount * 2

    // 構造器、getter/setter、toString 省略
    public static Student parse(String line) {
        String[] parts = line.trim().split("\\s+");
        Student s = new Student();
        s.setName(parts[0]);
        s.setAge(Integer.parseInt(parts[1]));
        s.setPencilCount(Integer.parseInt(parts[2]));
        s.setTotalPrice(s.getPencilCount() * 2);
        return s;
    }
}

主流程代碼


public class PencilStatistics {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        try (Scanner scanner = new Scanner(new File("students.txt"), "UTF-8")) {
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                if (line.isBlank()) continue;
                list.add(Student.parse(line));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        int grandTotal = 0;
        for (Student s : list) {
            System.out.println(s);  // 依賴 toString()
            grandTotal += s.getTotalPrice();
        }
        System.out.println("總價:" + grandTotal + "元");
    }
}

關鍵點

  • try-with-resources 自動關閉流,防洩漏。
  • split("\\s+") 兼容多空格/制表符分隔。
  • 解析邏輯封裝在實體類 parse 靜態方法,職責清晰。
  • 輸出格式由 toString() 統一控制,易維護。

擴展建議

  1. 異常行記錄日誌而非中斷整個流程。
  2. 大文件改用 Files.lines() 流式處理。
  3. 若需導出 Excel,引入 Apache POI 在循環中寫入 Sheet。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved