2017-10-17 90 views
-1

我正在学习一个Java类,并且我一直在研究这个程序,该程序基于通过GUI输入的信息计算信用卡余额。在我的输出财务费用,新余额和新付款到期日均为0.我尝试添加5以查明我在哪里搞砸了,并且在计算newBalance时似乎没有正确引用“余额”。我认为财务费用也有同样的问题,但固定余额也会帮助我解决这个问题。用一种方法计算的变量不会去另一个

//calculates balance 
     public float calculateBalance() 
     { 
      balance = previousBalance + currentPurchases - payments - creditsReturns + lateFees+ 5; 

      return balance; 
     } 

     //sets finance charge 
     public void setFinanceCharge(float financeCharge) 
     { 
      double periodicRate; 
      periodicRate = .12/12; 
      float d = (float)periodicRate; 
      financeCharge = balance * d; 
     } 

     //gets finance charge 
     public float getFinanceCharge() 
     { 
      return financeCharge; 
     } 

    //Method to calculate new balance 
    public float calculateNewBalance() 
    { 
     //calculate the new balance 
     newBalance = balance+financeCharge+5; 

     return newBalance; 
    } 

    //setes new payment due 
    public void setpaymentDue(double newPayment) 
    { 
     newPayment = newBalance * .10; 
     this.paymentDue = (float)newPayment;    
    } 

    //gets new payment due 
    public float getpaymentDue() 
    { 
     return paymentDue; 
    } 

    //method to display results 
    public void displayOutput() 
    { 
     if (overCreditLimit == 0) 
     { 
     JOptionPane.showMessageDialog(null, 
       "The Customer number is: " + customerNumber + "\n" + 
       "The Customer name is: " + customerName + "\n" + 
       "The Credit Limit is: " + creditLimit + "\n" + 
       "The Previous Balance is: " + previousBalance + "\n" + 
       "The Current Purchases is: " + currentPurchases + "\n" + 
       "The Payments is: " + payments + "\n" + 
       "The Credits/Returns is: " + creditsReturns + "\n" + 
       "The Late Fees is: " + lateFees + "\n" + 
       "The Finance Charge is: " + financeCharge + "\n" + 
       "The New Balance is: " + newBalance + "\n" + 
       "The New Payment Due is: " + paymentDue + "\n"); 
     } 
     else 
     { 
      overCreditAmount = newBalance - creditLimit - 25; 
      JOptionPane.showMessageDialog(null, "You are " + overCreditAmount + " dollars over your credit limit," 
        + " a $25 fee has been charged to your new balance"); 
      JOptionPane.showMessageDialog(null, 
        "The Customer number is: " + customerNumber + "\n" + 
        "The Customer name is: " + customerName + "\n" + 
        "The Credit Limit is: " + creditLimit + "\n" + 
        "The Previous Balance is: " + previousBalance + "\n" + 
        "The Current Purchases is: " + currentPurchases + "\n" + 
        "The Payments is: " + payments + "\n" + 
        "The Credits/Returns is: " + creditsReturns + "\n" + 
        "The Late Fees is: " + lateFees + "\n" + 
        "The Finance Charge is: " + financeCharge + "\n" + 
        "The Amount over Credit Limit is: " + overCreditAmount + "\n" + 
        "The New Balance is: " + newBalance + "\n" + 
        "The New Payment Due is: " + paymentDue + "\n"); 
     } 
    } 
+0

为了解决这个问题,我建议运行calculateNewBalance中的方法而不是调用变量。例如,为了达到平衡,请调用calculateBalance(),看看会发生什么。 – OneSurvivor

+0

如果它不起作用,我会建议在方法中创建一个本地变量以取代平衡,并查看它是否有效。如果没有,那么您没有显示的代码可能存在问题。 – OneSurvivor

回答

0

我看到解决此问题的一种方法是在calculateNewMethod方法内运行方法。例如。

public float calculateNewBalance() { 
    newBalance = calculateBalance() + getFinanceCharge(); 
    return newBalance; 
} 

我也建议避免在您修改私有类变量下和同样的方法内返回他们的代码,它更有意义,有一个方法,修改它,以及一个返回varible。

相关问题