java - 代码返回节点而不是子类的值

标签 java class inheritance

我是编程的新手,我正在学习的类(class)的一些代码有问题。我需要创建一个银行账户类,用于返回余额、添加存款、取款并打印当前利率的报表。我一直在尝试让主类返回储蓄账户类的值。相反,它返回节点值,我不知道我做错了什么。任何帮助,将不胜感激。代码如下。 期末考试.java

    import java.io.*;
    import java.util.Scanner;


public class FinalExam
{
    SavingsAccount savings;
    static String name;
    static double balance;    

    public static void main (String[] args) throws NegativeAmountException, InsufficientFundsException {
    double amount = 0;
    SavingsAccount savings = null;
    Scanner keyboard = new Scanner(System.in);
   try
   {
       savings = new SavingsAccount("Penny Saved", 500.00, .05);
       System.out.println(savings);
   }
   catch(NegativeAmountException e)
   {
      System.out.println("NegativeAmountException: " + e.getMessage());
      System.exit(1);

   }

   System.out.println(savings);
   Scanner input = new Scanner(System.in);
   System.out.print("Enter your deposit amount: ");
   amount = keyboard.nextDouble();
   System.out.println(savings);
   System.out.println("Enter your withdrawal amount:  ");
   amount = keyboard.nextDouble();
   savings.postInterest();
   System.out.println(savings);
}
}

银行账户.java

import java.util.InputMismatchException;
import java.util.Scanner; //Import for scanner


public class BankAccount {
  public String name;
  public double balance;     

  //set name and balance 
  // make sure balance is not negative
  // throw exception if balance is negative

  public BankAccount(String name, double balance)throws NegativeAmountException {
      if (balance < 0)
        throw new NegativeAmountException("Cannot create a BankAccount with a negative balance");


  }

    public BankAccount(String name)
            throws NegativeAmountException 
  {
    // set name and use 0 balance 
        name = null;
        balance = 0;
  }


  public void deposit(double amount) throws NegativeAmountException {
      if (amount < 0)
        throw new NegativeAmountException("Cannot deposit a negative amount: " + amount);
      balance = balance + amount;
  }

  public void withdraw(double amount) throws InsufficientFundsException, NegativeAmountException {
    if (amount > balance)
        throw new InsufficientFundsException("Cannot withdraw more than the current balance of this BankAccount");
    if (amount < 0)
        throw new NegativeAmountException("Cannot withdraw a negative amount: " + amount);
    balance = balance - amount;
  }

  public double getBalance() {

    return balance;

  }
  // print bank statement including customer name
 // and current account balance

  public void printStatement() {
      System.out.println("BankAccount owned by: " + name +  "    balance: $" + balance);
    }
}

储蓄账户.java

public class SavingsAccount extends BankAccount
{
    double interest;

    public SavingsAccount(String name, double balance, double interest) throws NegativeAmountException {

      super(name, balance);


    }
    public double getInterest()
    {
    return interest;
    }
    public void postInterest() {

       balance = balance + ((balance * interest)/12);
    }

    public void printStatement() {
        super.printStatement();
      System.out.println("Account for " + name +  " Saved" + balance + "    balance: $" + "Current Interest Rate is" + interest);
      }
 }

我知道 FinalExam.java 的最后一部分是不完整的,但我试图在继续处理其他问题之前打印出该声明。如有任何建议,我们将不胜感激。

最佳答案

I am stuck trying to get the the main class to return the values of the savings account class. Instead it returns the node value and I can't figure out what I a doing wrong.

你的问题是你在打电话

savings = new SavingsAccount("Penny Saved", 500.00, .05);
System.out.println(savings);

println 自动对其参数调用 toString 方法。由于您没有@Override SavingsAccounttoString 方法,它会打印您所谓的“节点值”。

您的SavingsAccount 有一个方法

public void printStatement()

这似乎打印了你想要的信息。所以调用它而不是 println

关于java - 代码返回节点而不是子类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562799/

相关文章:

ruby - 为什么方法 to_i 和 to_f 没有出现在 String.methods 中?

java - 如何将非字符串 Java 对象传递给 ActionBean - Stripes

java - 无法将值传递给 Java 中的 ArrayList

java - 如何识别 byte[] 的内容是 JPEG?

perl - 如何调用类:method determined at runtime in perl?

C++ 多态性/虚函数在这里不起作用

ruby - 实例变量继承

c++ - 构图模式

java - 运行测试不同循环结构的程序后没有输出

java - tomat 7中JNDI数据源注入(inject)的@Resource注解