【发布时间】:2015-02-18 07:23:45
【问题描述】:
我将创建一个跟踪银行帐户余额的程序。程序将使用一个循环,直到用户通过回答 no 来选择退出 Do you want to continue? 。
在循环中,将要求用户输入金额(存款为正数,取款为负数)。该金额应从账户余额变量中添加/减去。所有存款/取款都应保存为历史,以便我们稍后打印。当用户选择退出循环时,将打印当前帐户余额以及帐户历史记录(来自数组/ArrayList)。
现在,我想使用一个有十个槽的数组来实现历史记录功能。
我的问题是如何跟踪所有存款、取款和当前账户余额(使用具有十个槽的数组作为历史记录功能),以便在用户退出时将其打印出来程序?
我的代码:
BankApp 类:
package bankapp;
import java.util.Scanner;
public class BankApp {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
askingUser au = new askingUser();
System.out.println("WELCOME TO OUR BANK!\nYou have 100 SEK by default in your account.");
while (true) {
au.userInput();
System.out.println("Do you want to continue? Answer by Yes or No.");
String yesOrNo = input.next();
if (yesOrNo.equalsIgnoreCase("yes")) {
au.userInput();
} else if (yesOrNo.equalsIgnoreCase("no")) {
System.out.println("History: ");
//print out the transaction history
System.exit(0);
} else {
System.out.println("Invalid character input.");
}
}
}
}
askingUser 类:
package bankapp;
import java.util.Scanner;
public class askingUser {
Scanner input = new Scanner(System.in);
double initialBal = 100;
public void userInput() {
System.out.println("Enter your amount: (+ve for deposit & -ve for withdraw)");
double inputAmount = input.nextDouble();
if (inputAmount >= 0) {
double newPosAm = initialBal + inputAmount;
System.out.println("Your current balance is: " + newPosAm + " SEK");
} else {
double newNegAm = initialBal + inputAmount;
System.out.println("Your current balace is: " + newNegAm + " SEK");
}
}
}
【问题讨论】:
-
数组不是一个好主意,因为您需要“记住”哪个索引是最新的,然后必须以相反的顺序解析该数组。使用
ArrayList并在索引0上插入最新条目可能会更好。然后您可以删除索引号 > 10 的条目。 -
好主意,我就是这么想的。 ArrayList 可能会更好。
-
我知道这是一个老问题,但如果有人偶然发现它,他们应该知道由于精度问题,双精度和浮点数不应该用于货币。应使用定点数。
标签: java arrays loops arraylist counter