Java账户类程序

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24519576/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 12:43:09  来源:igfitidea点击:

Java account class program

java

提问by user3739072

I have wrote this program over and over again, can someone please tell me what I am missing, it looks like its a small error I am not catching.

我一遍又一遍地编写了这个程序,有人可以告诉我我遗漏了什么,它看起来像是一个我没有发现的小错误。

Here is what I am trying to accomplish:

这是我想要完成的:

Design a class named Account that contains:

设计一个名为 Account 的类,其中包含:

  • A private int data field named id for the account(default 0)
  • A private double data field named balance for the account (default 0)
  • A private double data field named annualInterestRate that stores the current interest rate (default 0). Assume all accounts have the same interest rate.
  • A private Date data field named dateCreated that stores the date when the account was created. A no-arg constructor that creates a default account.
  • A constructor that creates an account with the specific id and initial balance.
  • The accessor and mutator methods for id, balance, and annualInterestRate.
  • The accessor method for dateCreated
  • A method named getMonthlyInterestRate() that returns the monthly interest rate.
  • A method named withdraw that withdraws a specified amount from the account A method named deposit that deposits a specified amount to the account.
  • Write a test program that creates an Account object with an account ID of 1122, a balance of $20,000, and an annual interest rate of 4.5%. Use the withdraw method to withdraw $2,500, use the deposit method to deposit $3,000 and print the balanace, the monthly interest, and the date when this account was created.
  • 帐户的一个名为 id 的私有 int 数据字段(默认为 0)
  • 帐户的名为 balance 的私有双数据字段(默认为 0)
  • 一个名为 yearInterestRate 的私有双数据字段,用于存储当前利率(默认为 0)。假设所有账户的利率相同。
  • 一个名为 dateCreated 的私有日期数据字段,用于存储创建帐户的日期。创建默认帐户的无参数构造函数。
  • 创建具有特定 ID 和初始余额的帐户的构造函数。
  • id、balance 和annualInterestRate 的访问器和修改器方法。
  • dateCreated 的访问器方法
  • 一个名为 getMonthlyInterestRate() 的方法,它返回月利率。
  • 一种从账户中提取指定金额的名为withdraw 的方法 一种名为deposit 的方法,用于将指定金额存入账户。
  • 编写一个测试程序,创建一个账户对象,账户 ID 为 1122,余额为 20,000 美元,年利率为 4.5%。使用提款方式提取2,500美元,使用存款方式存入3,000美元并打印余额、每月利息和创建此帐户的日期。

Here is what I have so far:

这是我到目前为止所拥有的:

import java.util.Date;

public class Assign22 {

public static void main(String[] args) {
    // TODO Auto-generated method stub

Account account1 = new Account(1122, 20000, .045);
account1.withdraw(2500);
account1.deposit(3000);
System.out.println("Date Created:" + java.util.Date dateCreated = new java.util.Date());
System.out.println("Account ID:" + account1.id);
System.out.println("Balance:" + account1.getBalance());
System.out.println("Interest Rate:" + account1.getAnnualInterestRate());
System.out.println("Balance after withdraw of 2500:" +       account1.getAnnualInterestRate());
System.out.println("Balance after deposit of 3000:" + account1.getAnnualInterestRate());
System.out.println("Monthly Interest:" + account1.id);

System.out.println("Process completed.");
}

class Account {
//define variables
private int id;
private double balance; // balance for account
private double annualInterestRate; //stores the current interest rate
private Date dateCreated; //stores the date account created

//no arg construtor
Account () {
    id = 0;
    balance = 0.0;
    annualInterestRate = 0.0;
}
//constructor with specific id and initial balance
Account(int newId, double newBalance) {
    id = newId;
    balance = newBalance;
}
Account(int newId, double newBalance, double newAnnualInterestRate) {
    id = newId;
    balance = newBalance;
    annualInterestRate = newAnnualInterestRate;
}
//accessor/mutator methods for id, balance, and annualInterestRate
public int getId() {
    return id;
}
public double getBalance() {
    return balance;
}
public double getAnnualInterestRate() {
    return annualInterestRate;
}
public void setId(int newId) {
    id = newId;
}
public void setBalance(double newBalance) {
    balance = newBalance;
}
public void setAnnualInterestRate(double newAnnualInterestRate) {
    annualInterestRate = newAnnualInterestRate;
}
//accessor method for dateCreated
public void setDateCreated(Date newDateCreated) {
    dateCreated = newDateCreated;
}
//define method getMonthlyInterestRate
double getMonthlyInterestRate() {
    return annualInterestRate/12;
}
//define method withdraw
double withdraw(double amount) {
    return balance -= amount;
}   
//define method deposit
double deposit(double amount) {
    return balance += amount;   
}
}

}

This is the error that I am receiving: Not sure what I missed here:

这是我收到的错误:不确定我在这里错过了什么:

"Syntax error on token "Date", , expected after this token dateCreated cannot be resolved to a variable at Assign22.main(Assign22.java:12)"

“令牌“日期”上的语法错误,在此令牌 dateCreated 之后预期无法解析为 Assign22.main(Assign22.java:12) 处的变量”

回答by Sotirios Delimanolis

You can't have variable declarations as part of Stringconcatenation expressions

您不能将变量声明作为String串联表达式的一部分

System.out.println("Date Created:" + java.util.Date dateCreated = new java.util.Date());

Split that up

把它分开

java.util.Date dateCreated = new java.util.Date()
System.out.println("Date Created:" + dateCreated);