簡體   English   中英

使用對象/方法進行Java編程

[英]Java Programming using Objects/ Methods

我在存入和提取存款后無法獲得余額,取而代之的是,它會回到初始余額並進行操作。

我要求它提取2500,這應該讓我剩下17500,但是然后我將其存入3000,這應該給我20500,但是我卻得到23000。

另外,我的日期輸出始終為“ null”。

這是第一個Class文件。

import java.util.Date;

public class Account
{
   private int id;
   private double balance;
   private double annualInterestRate;
   private Date dateCreated;
   private double withdraw;
   private double deposit;

   Account()
   {
      id = 1;
      balance = 1;
      annualInterestRate = 1;
   }

   Account(int newID, double newBalance, double newAnnualInterestRate)
   {
      id = newID;
      balance = newBalance;
      annualInterestRate = newAnnualInterestRate;   
   }

   public int getId()
   {
      return id;
   }

   public double getBalance()
   {
      return balance;
   }

   public double getAnnualInterestRate()
   {
      return annualInterestRate;
   }

   public double getMonthlyInterestRate()
   {
      return (annualInterestRate / 12) / 100;
   }

   public double getMonthlyInterest()
   {
      return balance * getMonthlyInterestRate();
   }

   public double getWithdraw(double amount)
   {
      amount = balance - amount;
      return amount;
   }

   public double getDeposit(double amount)
   {
      amount = balance + amount;
      return amount;
   }

   public Date getDateCreated()
   {
      return dateCreated;
   }
}

這是測試類文件

public class TestAccount
{
   public static void main(String[] args)
   {
      Account A = new Account(1122, 20000, 4.5);

      System.out.println("Account number: " + A.getId());
      System.out.println("The Account balance is: $" + A.getBalance() + "0");
      System.out.println("The Annual Interest Rate is: " + A.getAnnualInterestRate()+ "%");
      System.out.println("The Account balance after a $2,500 withrawal is: " + A.getWithdraw(2500));
      System.out.println("The Account balance after a $3,000 deposit is: " + A.getDeposit(3000));
      System.out.println("The monthly interest earned is: " + A.getMonthlyInterest());
      System.out.println("The account was created on: " + A.getDateCreated());   
   }
}

您正在修改局部變量amount ,而不是修改balance getWithdraw ,更改

amount = balance - amount;

balance = balance - amount;

同樣對於getDeposit方法。

順便說一下,不清楚為什么要調用這些方法getWithdrawgetDeposit ,因為這些方法分別進行了取款和存款。 我會叫他們withdrawdeposit 我也沒有發現在兩種方法中都返回參數值amount目的。 兩種方法都不需要返回任何東西,可以指定它們返回void

而且,沒有為dateCreated分配任何內容,因此它為null 您可以為此實例變量添加一個setter方法。

在您的getWithdrawgetDeposit方法中,您可能應該更改balance ,而不是amount 也沒有理由從這些方法中返還amount

您永遠不會在我可以看到的任何地方創建Date對象,因此您的日期為null 基於getDateCreated方法的名稱,我猜應該將日期設置為創建帳戶的日期,因此您應該在Account構造函數中進行設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM