更新:我从未解决过以所需的特定格式输出日期的问题,但程序的其余部分仍然有效。在搞乱了time.format类后,我确实找到了几种不同格式输出日期的方法,并且我能够使用除列表中最后一个应该属于time.format类但不幸的是我从来没有弄清楚如何实现它。但是,这是一个很好的(在我看来)计算兴趣的简单程序的例子。我已经阅读了很多关于getter和setter的批评,但他们似乎对这个程序工作得很好。请注意,我仍在学习Java和编程。
package accountproject;
// two imports needed for date and time
import java.time.format.*;
import java.time.*;
// import standard exception error text
import java.text.ParseException;
// import EVERYTHING!
import java.util.*;
public class Account {
private static int id = 0;
private static double balance = 0;
private static double annualInterestRate = 0;
private static ZonedDateTime dateCreated;
private static double MonthlyInterestRate = annualInterestRate/12;
public Account()
{
// empty constructor
}
public Account(int id, double balance, double annualInterestRate, ZonedDateTime dateCreated) {
super();
Account.id = 0;
Account.balance = 0;
Account.annualInterestRate = 4.5;
}
public int getId() {
return id;
}
public void setId(int id) {
Account.id = id;
}
public static double getBalance(double d) {
return balance;
}
public void setBalance(double balance) {
Account.balance = balance;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
Account.annualInterestRate = annualInterestRate;
}
public static ZonedDateTime ConvertStringToDate(String dateNow) {
try
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
ZonedDateTime date = ZonedDateTime.parse(dateNow, formatter);
return date;
}
catch (DateTimeParseException e)
{
System.out.println(e);
}
ZonedDateTime date = null;
return date;
}
public static double getMonthlyInterestRate(double annualInterestRate2) {
double temp = annualInterestRate2/12;
MonthlyInterestRate = temp;
return MonthlyInterestRate;
}
public static double getMonthlyInterest(double newBalance2) {
double temp = 100/MonthlyInterestRate;
double temp2 = newBalance2/temp;
double temp3 = newBalance2 + temp2;
newBalance2 = temp3;
return temp2;
}
public static double deposit(double balance, double deposit) {
double temp = balance + deposit;
balance = temp;
return balance;
}
public static double withdrawal(double balance, double withdrawal) {
double temp = balance - withdrawal;
balance = temp;
return balance;
}
public static void main(String[] args) throws ParseException {
// establish a scanner and set example values
Scanner stdin = new Scanner(System.in);
id = 1122;
balance = 20000;
MonthlyInterestRate = .375;
double withdrawal = 2500;
double deposit = 3000;
double balanceExp = deposit(balance,deposit);
balanceExp = withdrawal(balanceExp,withdrawal);
double balanceExp2 = getMonthlyInterest(balanceExp);
double monthlyInterest = balanceExp2;
String dateExp = "Fri Oct 06 16:10:59 GMT 2017";
dateCreated = ConvertStringToDate(dateExp);
System.out.println("SAMPLE: Account ID " + id + " with a balance of $" + balanceExp
+ ",\nhas accrued $" + monthlyInterest + " in interest and was opened on "
+ dateCreated + ".");
System.out.println("Please enter the ID number:");
// get the id number input
id = stdin.nextInt();
stdin.nextLine();
System.out.println("Typically, the original balance will be $20,000.00.\nPlease enter the balance:");
// get the starting balance input
balance = stdin.nextInt();
stdin.nextLine();
double newBalance = balance;
Account.getBalance(20000.00);
System.out.println("Please enter the deposit amount:");
// ensure deposit is set to 0 before getting input
deposit = 0.00;
// get the deposit amount from input
deposit = stdin.nextDouble();
stdin.nextLine();
newBalance = deposit(balance, deposit);
System.out.println("Please enter the withdrawal amount:");
// ensure withdrawal is set to 0 before getting input
withdrawal = 0.00;
// get the deposit amount from input
withdrawal = stdin.nextDouble();
stdin.nextLine();
double newBalance2 = withdrawal(newBalance, withdrawal);
double newBalance3 = getMonthlyInterest(newBalance2);
double MonthlyInterest = newBalance3;
print(id, newBalance2, MonthlyInterest, dateCreated);
stdin.close();
}
public static void print(int id, double newBalance2, double MonthlyInterest, ZonedDateTime dateCreated2)
{
System.out.println("To verify: the Account ID is " + id + " with a balance of $" + newBalance2
+ ",\nhas accrued $" + MonthlyInterest + " in interest, and was opened on " + dateCreated2 + ".");
}
}
答案 0 :(得分:1)
我认为问题出在主线上。
withdrawl(balance, withdrawl);
您必须将方法的返回值分配给变量。
double currentBalance = withdrawl(balance, withdrawl);
print(id, currentBalance, MonthlyInterestRate, dateCreated);
答案 1 :(得分:0)
我花了很多时间来重新学习这个。我没有意识到java 8有新的java.time
这里有很多变化。 希望这有助于在代码中注释所有更改
import java.time.format.*;
import java.time.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Account {
private static int id = 0;
private static double balance = 0;
private static double annualInterestRate = 0;
private static Date dateCreated;
private static double MonthlyInterestRate = annualInterestRate/12;
public Account()
{
// empty constructor
}
/**
* @param id
* @param balance
* @param annualInterestRate
* @param dateCreated
* regular constructors
*/
public Account(int id, double balance, double annualInterestRate, Date dateCreated) {
super();
Account.id = 0;
Account.balance = 0;
Account.annualInterestRate = 4.5;
Account.dateCreated = dateCreated;
}
public int getId() {
return id;
}
public void setId(int id) {
Account.id = id;
}
public static double getBalance(double d) {
return balance;
}
public void setBalance(double balance) {
Account.balance = balance;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
Account.annualInterestRate = annualInterestRate;
}
public static LocalDate ConvertStringToDate(String dateNow) {
try
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM d yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(dateNow, formatter);
System.out.println(date);
return date;
}
catch (DateTimeParseException e)
{
System.out.println(e);
}
LocalDate date = null;
return date;
}
public static double getMonthlyInterestRate(double annualInterestRate2) {
double temp = annualInterestRate2/12;
MonthlyInterestRate = temp;
return MonthlyInterestRate;
}
public double getMonthlyInterest() {
double temp = 100/annualInterestRate;
double temp2 = getBalance(0)/temp;
double temp3 = balance + temp2;
System.out.println(temp3);
return temp3;
}
public static double deposit(double balance, double deposit) {
double temp = balance + deposit;
balance = temp;
return balance;
}
public static double withdrawl(double balance, double withdrawl) {
double temp = balance - withdrawl;
balance = temp;
return balance;
}
public static void main(String[] args) throws ParseException {
//create Scanner 1 time. no need to create over and over
Scanner stdin = new Scanner(System.in);
id = 1122;
balance = 20000;
MonthlyInterestRate = .375;
System.out.println("SAMPLE: Account ID " + id + " with a balance of " + balance + " "
+ "and a monthly interest rate of " + MonthlyInterestRate + " opened on " +
dateCreated + ".");
System.out.println("Please enter the ID number:");
id = stdin.nextInt();
// consume the /n
stdin.nextLine();
System.out.println("Typically, the original balance will be $20,000.00.\nPlease enter the balance:");
balance = stdin.nextInt();
// consume the /n
stdin.nextLine();
double newBalance = balance;
Account.getBalance(20000.00);
System.out.println("Please enter the date created like: MM d yyyy");
// assign your string to your scanned object
String dateNow = stdin.nextLine();
//catch your returned date
LocalDate dateCreated = ConvertStringToDate(dateNow);
System.out.println("Please enter the deposit amount:");
double deposit = 0.00;
deposit = stdin.nextDouble();
// consume the /n
stdin.nextLine();
newBalance = deposit(balance, deposit);
System.out.println("Please enter the withdrawl amount:");
double withdrawl = 0.00;
withdrawl = stdin.nextDouble();
// consume the /n
stdin.nextLine();
double newBalance2 = withdrawl(newBalance, withdrawl);
double annualInterestRate2 = 4.5;
double MonthlyInterestRate2 = getMonthlyInterestRate(annualInterestRate2);
// pass your local date
print(id, newBalance2, MonthlyInterestRate2, dateCreated);
}
public static void print(int id, double balance, double MonthlyInterestRate2, LocalDate dateCreated)
{
System.out.println("To verify: the Account ID is " + id + " with a balance of $" + balance + " "
+ "and a monthly interest rate of " + MonthlyInterestRate2 + "% opened on " +
dateCreated + ".");
}
}
答案 2 :(得分:0)
我从来没有弄清楚如何设置格式以获得我教授想要的日期,但我得到了100%,所以我猜到最后它并没有那么重要。感谢Jeremiah Stillings,我感谢所有的帮助。这就是我最终的结果:
package accountproject;
// two imports needed for date and time
import java.time.format.*;
import java.time.*;
// import standard exception error text
import java.text.ParseException;
// import EVERYTHING!
import java.util.*;
public class Account {
private static int id = 0;
private static double balance = 0;
private static double annualInterestRate = 0;
private static ZonedDateTime dateCreated;
private static double MonthlyInterestRate = annualInterestRate/12;
public Account()
{
// empty constructor
}
/**
* @param id
* @param balance
* @param annualInterestRate
* @param dateCreated
* regular constructors
*/
public Account(int id, double balance, double annualInterestRate, ZonedDateTime dateCreated) {
super();
Account.id = 0;
Account.balance = 0;
Account.annualInterestRate = 4.5;
}
public int getId() {
return id;
}
public void setId(int id) {
Account.id = id;
}
public static double getBalance(double d) {
return balance;
}
public void setBalance(double balance) {
Account.balance = balance;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
Account.annualInterestRate = annualInterestRate;
}
public static ZonedDateTime ConvertStringToDate(String dateNow) {
try
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
ZonedDateTime date = ZonedDateTime.parse(dateNow, formatter);
return date;
}
catch (DateTimeParseException e)
{
System.out.println(e);
}
ZonedDateTime date = null;
return date;
}
public static double getMonthlyInterestRate(double annualInterestRate2) {
double temp = annualInterestRate2/12;
MonthlyInterestRate = temp;
return MonthlyInterestRate;
}
public static double getMonthlyInterest(double newBalance2) {
double temp = 100/MonthlyInterestRate;
double temp2 = newBalance2/temp;
double temp3 = newBalance2 + temp2;
newBalance2 = temp3;
return temp2;
}
public static double deposit(double balance, double deposit) {
double temp = balance + deposit;
balance = temp;
return balance;
}
public static double withdrawal(double balance, double withdrawal) {
double temp = balance - withdrawal;
balance = temp;
return balance;
}
public static void main(String[] args) throws ParseException {
// establish a scanner and set example values
Scanner stdin = new Scanner(System.in);
id = 1122;
balance = 20000;
MonthlyInterestRate = .375;
double withdrawal = 2500;
double deposit = 3000;
double balanceExp = deposit(balance,deposit);
balanceExp = withdrawal(balanceExp,withdrawal);
double balanceExp2 = getMonthlyInterest(balanceExp);
double monthlyInterest = balanceExp2;
String dateExp = "Fri Oct 06 16:10:59 GMT 2017";
dateCreated = ConvertStringToDate(dateExp);
System.out.println("SAMPLE: Account ID " + id + " with a balance of $" + balanceExp
+ ",\nhas accrued $" + monthlyInterest + " in interest and was opened on "
+ dateCreated + ".");
System.out.println("Please enter the ID number:");
// get the id number input
id = stdin.nextInt();
stdin.nextLine();
System.out.println("Typically, the original balance will be $20,000.00.\nPlease enter the balance:");
// get the starting balance input
balance = stdin.nextInt();
stdin.nextLine();
double newBalance = balance;
Account.getBalance(20000.00);
System.out.println("Please enter the deposit amount:");
// ensure deposit is set to 0 before getting input
deposit = 0.00;
// get the deposit amount from input
deposit = stdin.nextDouble();
stdin.nextLine();
newBalance = deposit(balance, deposit);
System.out.println("Please enter the withdrawal amount:");
// ensure withdrawal is set to 0 before getting input
withdrawal = 0.00;
// get the deposit amount from input
withdrawal = stdin.nextDouble();
stdin.nextLine();
double newBalance2 = withdrawal(newBalance, withdrawal);
double newBalance3 = getMonthlyInterest(newBalance2);
double MonthlyInterest = newBalance3;
print(id, newBalance2, MonthlyInterest, dateCreated);
stdin.close();
}
public static void print(int id, double newBalance2, double MonthlyInterest, ZonedDateTime dateCreated2)
{
System.out.println("To verify: the Account ID is " + id + " with a balance of $" + newBalance2
+ ",\nhas accrued $" + MonthlyInterest + " in interest, and was opened on " + dateCreated2 + ".");
}
}