Переделал 2ое ещё раз
unknown
java
3 years ago
3.3 kB
5
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...