Нужна помощь, чтобы сделать мой код короче!(Нуб здесь) - PullRequest
0 голосов
/ 03 февраля 2019

Мой код работает, мне просто нужна помощь, чтобы сделать его короче и эффективнее.Я думаю, что цикл for должен работать, но я не знаю, как его реализовать.

public void onClick(View view) {
    double loanAmount = Integer.parseInt(mLoanAmount.getText().toString());
    double interestRate = Double.parseDouble(mInterestRate.getText().toString());
    double rate = ((interestRate/100)/12);
    double rate5 = Math.pow((1 + rate) , (-12*5));
    double rate10 = Math.pow((1 + rate) , (-12*10));
    double rate15 = Math.pow((1 + rate) , (-12*15));
    double rate20 = Math.pow((1 + rate) , (-12*20));
    double rate25 = Math.pow((1 + rate) , (-12*25));
    double monthlyPayment5 = ((loanAmount * rate)/(1 - rate5));
    double monthlyPayment10 = ((loanAmount * rate)/(1 - rate10));
    double monthlyPayment15 = ((loanAmount * rate)/(1 - rate15));
    double monthlyPayment20 = ((loanAmount * rate)/(1 - rate20));
    double monthlyPayment25 = ((loanAmount * rate)/(1 - rate25));

    mMonthly5.setText(new DecimalFormat("##.##").format(monthlyPayment5));
    mMonthly10.setText(new DecimalFormat("##.##").format(monthlyPayment10));
    mMonthly15.setText(new DecimalFormat("##.##").format(monthlyPayment15));
    mMonthly20.setText(new DecimalFormat("##.##").format(monthlyPayment20));
    mMonthly25.setText(new DecimalFormat("##.##").format(monthlyPayment25));
}

, если вы заметили, что мой код очень повторяется, единственное, что изменяется, это число в имени переменной.

1 Ответ

0 голосов
/ 03 февраля 2019

Ваш код можно переписать на

public void onClick(View view) {
    double loanAmount = Integer.parseInt(mLoanAmount.getText().toString());
    double interestRate = Double.parseDouble(mInterestRate.getText().toString());

    double baseRate = ((interestRate/100)/12);

    double rates[] = {-12*5, -12*10, -12*15, -12*20, -12*25};
    TextView views = {mMonthly5, mMonthly10, mMonthly15, mMonthly20, mMonthly25};

    for(int i=0; i<rates.length; i++) {
        double actualRate = Math.pow((1 + baseRate) , rates[i]);
        double monthlyPayment = ((loanAmount * baseRate)/(1 - actualRate));
        views[i].setText(new DecimalFormat("##.##").format(monthlyPayment));
    }
}

Надеюсь, этот пример будет вам полезен в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...