Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с JAVA. Что не так???

Николай Ученик (91), на голосовании 9 месяцев назад
// Родительский класс Account
public class Account {
private int accountNumber;
private double balance;
private String owner;

public Account(int accountNumber, double balance, String owner) {
this.accountNumber = accountNumber;
this.balance = balance;
this.owner = owner;
}

public void deposit(double amount) {
balance += amount;
System.out.println(amount + " пополнено на счет " + accountNumber);
}

public void withdraw(double amount) {
if (balance > 0 && balance >= amount) {
balance -= amount;
System.out.println(amount + " снято со счета " + accountNumber);
} else {
System.out.println("Недостаточно средств на счете " + accountNumber);
}
}

public double getBalance() {
return balance;
}
}

// Дочерний класс SavingsAccount
public class SavingsAccount extends Account {
private double interestRate;

public SavingsAccount(int accountNumber, double balance, String owner, double interestRate) {
super(accountNumber, balance, owner);
this.interestRate = interestRate;
}

@Override
public void deposit(double amount) {
super.deposit(amount);
applyInterest();
}

private void applyInterest() {
double interest = getBalance() * interestRate / 100;
super.deposit(interest);
System.out.println(interest + " начислено процентов на счет " + getAccountNumber());
}
}

// Дочерний класс CreditCardAccount
public class CreditCardAccount extends Account {
private double creditLimit;

public CreditCardAccount(int accountNumber, double balance, String owner, double creditLimit) {
super(accountNumber, balance, owner);
this.creditLimit = creditLimit;
}

@Override
public void withdraw(double amount) {
if (amount <= creditLimit && (getBalance() + amount) <= creditLimit) {
super.withdraw(amount);
} else {
System.out.println("Превышен лимит снятия со счета " + getAccountNumber());
}
}
}

// Класс BankSystem
public class BankSystem {
public static void main(String[] args) {
Account savingsAccount = new SavingsAccount(1, 1000, "John Doe", 0.5);
Account creditCardAccount = new CreditCardAccount(2, 500, "Alice Smith", 1000);

savingsAccount.deposit(500);
savingsAccount.withdraw(200);
System.out.println("Баланс сберегательного счета: " + savingsAccount.getBalance());

creditCardAccount.deposit(200);
creditCardAccount.withdraw(700);
System.out.println("Баланс счета кредитной карты: " + creditCardAccount.getBalance());
}
}
Голосование за лучший ответ
λ Искусственный Интеллект (248044) 10 месяцев назад
Неформатированный код я не читаю.
Для форматного ввода внизу есть кнопка <>

 Это форматированный текст       
В чем проблема вообще?
Виктор Мальков Мудрец (10362) 10 месяцев назад
С первого взгляда, не работает CreditCardAccount.withdraw(), во-первых, там сравнивается что-то не то, во-вторых, вызов super не сработает, родительский класс ничего не знает о кредитном лимите и откажется снимать.
А вообще, надо знать, что написано в задании. Мало ли что ещё может не соответствовать.
НиколайУченик (91) 10 месяцев назад
Создать родительский класс Account со следующими атрибутами: номер счета, баланс ,владелец счета
Реализовать методы для каждого родительского класса для: пополнения счета на указанную сумму, снятие указанной суммы со счета, запроса баланса
Создать дочерние классы с различными типами счетов: Сберегательный счет, Счет кредитной карты
Реализовать следующее специфичное поведение для каждого типа счета. Сберегательный счет:
- Нельзя снимать деньги со счета, если баланс меньше или равен 0.
- За каждую успешную транзакцию должны начисляться проценты (например, 0.5% в год).
Счет кредитной карты:
- Максимальный баланс на счете составляет 100% от кредитного лимита.
- Можно использовать деньги с кредитного лимита, но сумма не должна превышать доступный лимит.
Александр Искусственный Интеллект (301588) 10 месяцев назад
где у тебя getAccountNumber()?...
переменная owner не используется...
Похожие вопросы