Задача, которую я пытаюсь выполнить, состоит в том, чтобы использовать данные классы и методы, чтобы взять деньги с самого богатого счета и отдать их самым бедным, чтобы они имели одинаковый баланс, и напечатать "(имя) имеет $ (сумма ). "
Я не знаю, какой метод использовать, и все, что я пробую, дает ошибку или неправильный вывод. Спасибо за чтение и помощь.
Основной класс, который я должен добавить код:
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.util.stream.Collectors;
import java.util.List;
public class BankManager {
private static BankAccount[] openAccountFile(String filename) {
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
List<String> rawData = reader.lines().collect(Collectors.toList());
BankAccount[] accounts = new BankAccount[rawData.size()];
for (int i = 0; i < accounts.length; ++i) {
String[] splitData = rawData.get(i).split(" ");
accounts[i] = new BankAccount(splitData[0].trim(), Float.parseFloat(splitData[1]));
}
return accounts;
}
catch (FileNotFoundException e) {
System.err.println("The input file does not exist.");
System.err.println(e.getMessage());
}
catch (IOException e) {
System.err.println("Something went wrong trying to read the file.");
System.err.println(e.getMessage());
}
return null;
}
public static void main(String[] args) {
BankAccount[] accounts = openAccountFile(args[0]);
System.out.println("The bank has $" + AccountManagement.overallBalance(accounts) + ".");
System.out.println("The richest account is " + AccountManagement.richest(accounts) + ".");
System.out.println("The poorest account is " + AccountManagement.poorest(accounts) + ".");
}
}
Классы, которые содержат методы:
public class AccountManagement {
public static String richest(BankAccount[] accounts) {
BankAccount richest = accounts[0];
for (BankAccount account : accounts) {
if (account.currentBalance() > richest.currentBalance())
richest = account;
}
return richest.accountName();
}
public static String poorest(BankAccount[] accounts) {
BankAccount poorest = accounts[0];
for (BankAccount account : accounts) {
if (account.currentBalance() < poorest.currentBalance())
poorest = account;
}
return poorest.accountName();
}
public static float overallBalance(BankAccount[] accounts) {
float total = 0;
for (BankAccount account : accounts) {
total += account.currentBalance();
}
return total;
}
public static BankAccount findAccount(String accountName, BankAccount[] accounts) {
for (BankAccount account : accounts) {
if (account.accountName().equals(accountName)) return account;
}
return null;
}
}
и:
public class BankAccount {
private String accountName;
private int balance;
public BankAccount(String accountName, float initialBalance) {
this.accountName = accountName;
this.balance = Math.round(initialBalance*100);
}
public float currentBalance() {
return (float)this.balance/100;
}
public void withdraw(float amount) {
balance -= Math.round(amount*100);
}
public void deposit(float amount) {
balance += Math.round(amount*100);
}
public String accountName() {
return this.accountName;
}
}
Текстовый файл содержит:
Luke 12.42
Cat 56.76
Nick 35.32
Mustafa 42.00