2016-09-19 5 views
-6
public class SavingsAccount { 
public static int annualInterestRate = 0; 
private double savingsBalance = 0; 

public double calculateMonthlyInterest(){ 
    return (savingsBalance * annualInterestRate)/12; 
} 

} 

Это то, что у меня есть. Я выполнял каждую часть, которая требовалась, кроме заданного значения. Мне нужен статический метод для установки значения yearInterestRate на что-то другое. Как вы знаете, чтобы что-то изменить в статическом методе, переменная также должна быть статичной. Вот почему yearInterestRate статичен. Моя проблема в том, что я не знаю, как создать метод и не пытаюсь его жестко закодировать. Мне нужен метод, который можно протестировать в другом классе. Должен ли я использовать set и получать методы для выполнения того, что я хочу?Как изменить значение переменной?

+3

Вы знаете, что 'static' означает, или почему вы добавляете его везде? И googling для «setter method java» был бы полезен. – Tom

+3

Подсказка: 'modifyInterestRate (int n)' – OldCurmudgeon

+1

Если это школьное задание, я предлагаю вам потратить некоторое время на эксперимент и убедиться в том, что происходит. Вы можете повторно назначить переменную в Java с помощью VARIABLE = VALUE. Печать переменной System.out.println (VARIABLE) – Gikkman

ответ

-2

я предполагаю, что п не определено

private static void modifyInterestRate(int n){ //=> parameters you missing here 
     this.annualInterestRate = n; 
    } 
+0

@OldCurmudgeon спасибо за указание – Roushan45

+0

Это уже плохая идея дать решение для очевидных вопросов о домашнем задании (вместо этого дайте подсказки, пусть OP узнает из этих намеков, чтобы решить домашнюю работу), но он должен быть, по крайней мере, компилируемым. – Tom

+1

это в статическом контексте – degr

0

Метод Метод доступа к переменной-члену необходимо объявить общественности, а переменная-член должна быть частной, так что он может быть изменен только методом доступа.

0

Поле static является глобальной переменной, связанной с классом. Происходит один раз. Поэтому сделайте поля нестатическими, и поле будет частью каждого объекта SavingsAccount, this.

public class SavingsAccount { 

    public int annualInterestRate = 0; 

    public double savingsBalance = 0; 

    public void calculateMonthlyInterest() { 
     double y = (savingsBalance*annualInterestRate)/12; 
     savingsBalance = y +savingsBalance; 
    } 

    public void modifyInterestRate(int n) { 
     this.annualInterestRate = n; // Or simply: 
     annualInterestRate = n; 
    } 
} 

Кстати поля не должны быть инициализирован. По умолчанию они будут 0, 0.0, null, false.

0

Выполнение этих переменных static означает, что каждый экземпляр SavingsAccount видит те же значения.

Когда вы создаете свой SavingsAccount, пожалуйста, установите значение, равное балансу Уоррена Баффета, пожалуйста.

Лучшая идея была бы использовать переменный экземпляр:

public class Account { 
    private double balance; 

    public Account(double balance) { this.balance = balance; } 

    public double getBalance() { return this.balance; } 
    public void setBalance(double newBalance) { this.balance = newBalance; } 
} 
Смежные вопросы