Переделал 2ое ещё раз

 avatar
unknown
java
2 years ago
3.3 kB
2
Indexable
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class CsvParserExample {

    public static void main(String[] args) {
        String csvFile = "movementList.csv";
        List<Transaction> transactions = parseCsvFile(csvFile);

        BigDecimal totalExpenses = getExpenseSum(transactions);
        BigDecimal totalIncome = getIncomeSum(transactions);

        System.out.println("Total expenses: " + totalExpenses);
        System.out.println("Total income: " + totalIncome);

        List<String> expensesByOrganization = getListOfExpenses(transactions);
        System.out.println("Expenses by organization:");
        for (String expense : expensesByOrganization) {
            System.out.println(expense);
        }
    }

    private static List<Transaction> parseCsvFile(String csvFile) {
        List<Transaction> transactions = new ArrayList<>();
        try (BufferedReader reader = new BufferedReader(new FileReader(csvFile))) {
            String line;
            reader.readLine();
            while ((line = reader.readLine()) != null) {
                String[] fields = line.split(",");
                Transaction transaction = new Transaction();
                transaction.accountType = fields[0];
                transaction.accountNumber = fields[1];
                transaction.currency = fields[2];
                transaction.operationDate = fields[3];
                transaction.reference = fields[4];
                transaction.description = fields[5];
                transaction.income = new BigDecimal(fields[6]);
                transaction.expense = new BigDecimal(fields[7]);
                transactions.add(transaction);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return transactions;
    }

    private static BigDecimal getExpenseSum(List<Transaction> transactions) {
        BigDecimal sum = BigDecimal.ZERO;
        for (Transaction transaction : transactions) {
            sum = sum.add(transaction.expense);
        }
        return sum;
    }

    private static BigDecimal getIncomeSum(List<Transaction> transactions) {
        BigDecimal sum = BigDecimal.ZERO;
        for (Transaction transaction : transactions) {
            sum = sum.add(transaction.income);
        }
        return sum;
    }

    private static List<String> getListOfExpenses(List<Transaction> transactions) {
        List<String> expensesByOrganization = new ArrayList<>();
        for (Transaction transaction : transactions) {
            if (transaction.expense.compareTo(BigDecimal.ZERO) > 0) {
                String expenseStr = transaction.accountNumber + ": " + transaction.expense;
                expensesByOrganization.add(expenseStr);
            }
        }
        return expensesByOrganization;
    }

    private static class Transaction {
        private String accountType;
        private String accountNumber;
        private String currency;
        private String operationDate;
        private String reference;
        private String description;
        private BigDecimal income;
        private BigDecimal expense;
    }
}
Editor is loading...