Переделал 2ое ещё раз
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...