Member 14007867 Ответов: 0

Как распечатать выходные данные с помощью метода tostring() в java


Создайте класс с именем AccountSavings. Этот класс имеет статическую двойную переменную
в котором хранится годовая процентная ставка для всех владельцев счетов. Имя переменной-это
ежегодный интерес. Класс также имеет еще одну двойную переменную с именем savingsBalance
который хранит баланс для текущего счета.
а. напишите конструктор для создания счета с указанным балансом. Добавить а
проверка того, является ли баланс больше 0.0. Если он меньше 0.0 то бросьте
исключение.
b. напишите нестатический метод calculateMonthlyInterest для расчета ежемесячного дохода.
проценты путем умножения накопительного баланса на годовой процент, деленный на 12
– проценты должны быть добавлены к сбережениям баланса.
c. напишите статический метод с именем modifyInterestRate для установки годовой процентной ставки.
Добавьте проверку того, является ли ставка больше, чем равна 0,0 и меньше, чем или
равным 1.0. В противном случае, исключение.
d. напишите метод toString, который возвращает savingsBalance в строковом формате.
После этого создайте класс AccountSavingsTest. Создайте два объекта из класса
Сбережения на счетах с остатками $2000.00 и $3000.00. Затем установите процентную ставку на 4%,
затем рассчитайте ежемесячную процентную ставку за каждые 12 месяцев для каждого объекта и распечатайте
новые балансы с помощью метода toString для каждого объекта. Загрузить AccountSavings.java
И еще AccountSavingsTest.java.

Что я уже пробовал:

Я хочу распечатать выходные данные с помощью метода toString (). Я пробовал "Account1.toString (), но это не сработает, я также попытался отформатировать выходные данные в суперклассе и подклассе. Я могу использовать метод get для отображения выходных данных, но это не так, как должно быть. Можете ли вы указать на мои ошибки? Большое вам спасибо!!!

//AccountSavings.java
public class AccountSavings {
	private static double annualInterestRate;
	private double savingsBalance;
	
	//constructor
	public AccountSavings (double savingsBalance) {
		//validate savingsBalance
		if (savingsBalance < 0.0) {
			throw new IllegalArgumentException ("The balance must be > 0.0");
		}
		this.savingsBalance = savingsBalance;
	}//end constructor
	
	public double getSavingsBalance() {
		return savingsBalance;
	}
	
	public double calculateMonthlyInterest() {
		double result;
		result = (double) (savingsBalance * annualInterestRate / 12);
		return savingsBalance = savingsBalance + result;
	}//end method
	
	public static void modifyInterestRate (double newRate){
		if (newRate <= 0.0 || newRate >= 1.0) {
			throw new IllegalArgumentException ("Annual rate must > 0.0 and < 1.0");
		}
		annualInterestRate = newRate;
	}//end method
	
	@Override
	public String toString () {
		return String.format ("%.2f%n",getSavingsBalance());
		
	}//end method
}//end class

//AccountSavingsTest 
public class AccountSavingsTest {
	public static void main (String [] args) {
		AccountSavings Account1 = new AccountSavings (2000.00);
		AccountSavings Account2 = new AccountSavings (3000.00);
		
		Account1.modifyInterestRate(0.04);
		Account2.modifyInterestRate(0.04);
		
		System.out.println("Monthly balances for Account1 at 4%");
		System.out.println("Balances: ");
		for (int i = 0; i <12; i++){
			Account1.calculateMonthlyInterest();
			System.out.println("Month " + (i+1) + ": " + String.format ("$%.2f", Account1.getSavingsBalance()));
		}	
		
		System.out.println();
		
		System.out.println("Monthly balances for Account2 at 4%");
		System.out.println("Balances: ");
		for (int i = 0; i <12; i++){
			Account2.calculateMonthlyInterest();
			System.out.println("Month " + (i+1) + ": " + String.format ("$%.2f", Account2.getSavingsBalance()));
		}		
	}
}

Mohibur Rashid

Вы правильно переопределили функцию toString. Все что вам нужно сделать это вызвать функцию

 System.out.println(Account1.toString());


Вы упустили весь смысл статической переменной. Статическая переменная является общей для любого объявленного экземпляра, т. е. если вы измените ее во втором приведенном ниже операторе
Account1.modifyInterestRate(0.04);
Account2.modifyInterestRate(0.03);

Учетная запись 1 также будет затронута. Для вызова статической функции не следует использовать экземпляр объекта.
Account1.modifyInterestRate(0.04); // not ideal. Java Compiler will throw warning
AccountSavings.modifyInterestRate(0.04); // is ideal. and do this before you declare any instance.


Что произойдет, если вы забудете инициализировать статическую переменную?
-> Так как ваш annualInterestRate если он двойной, то будет установлен на 0.0.

Что произойдет, если пользователю придется ввести процентную ставку? Вы ожидаете, что они вычислят? Как насчет того, чтобы взять ставку как 4%(4) и разделить на 100, чтобы получить процентную ставку.

Member 14007867

Большое вам спасибо! Это действительно помогает мне улучшить мой код.

0 Ответов