我如何更改此ATM代码以使其 import java.util.Scanner; 导入userAccountInformation.csv; 公共类ATM机{ 私人双可用平衡; 私人双重平衡; 扫描仪输入=新扫描仪(System.in); 公共int用户帐户(){ 系统输出打印(“请输入您的账号:”); 国际账户; account=input.nextInt(); 验证输入(); 返回帐户; } 公共int userPin(){ System.out.print(“请输入您的pin码:”); int引脚; pin=input.nextInt(); 验证输入(); 回位销; } 公共无效STARTAM(){ 用户帐户(); userPin(); DrawMain菜单(); } 公共菜单(){ int选择; System.out.println(“\nATM主菜单:”); System.out.println(“1-查看账户余额”); System.out.println(“2-提取资金”); System.out.println(“3-添加资金”); System.out.println(“4-终止交易”); 系统输出打印(“选择:”); selection=input.nextInt(); 开关(选择){ 案例1: viewAccountInfo(); 打破 案例2: 撤回(); 打破 案例3: 增加资金(); 打破 案例4: System.out.println(“感谢您使用这个ATM!!!再见”); } } public void viewcountinfo(){ System.out.println(“账户信息:”); System.out.println(“\t--总余额:$”+总余额); System.out.println(“\t--可用余额:$”+可用余额); DrawMain菜单(); } 公共作废保证金(金额){ System.out.println(“\n***请立即插入您的钱…***”); 总余额=总余额+折旧金额; availableBalance=availableBalance+depAmount; } 公共无效支票不足资金(整数取款金额){ if(总余额-提款金额
但是,有人能帮我编写validateInput()方法,以便: 1.检查帐号和密码,并根据用户的文本文件进行验证。允许三次尝试 并帮助我更改它,以便:我如何更改此ATM代码以使其 import java.util.Scanner; 导入userAccountInformation.csv; 公共类ATM机{ 私人双可用平衡; 私人双重平衡; 扫描仪输入=新扫描仪(System.in); 公共int用户帐户(){ 系统输出打印(“请输入您的账号:”); 国际账户; account=input.nextInt(); 验证输入(); 返回帐户; } 公共int userPin(){ System.out.print(“请输入您的pin码:”); int引脚; pin=input.nextInt(); 验证输入(); 回位销; } 公共无效STARTAM(){ 用户帐户(); userPin(); DrawMain菜单(); } 公共菜单(){ int选择; System.out.println(“\nATM主菜单:”); System.out.println(“1-查看账户余额”); System.out.println(“2-提取资金”); System.out.println(“3-添加资金”); System.out.println(“4-终止交易”); 系统输出打印(“选择:”); selection=input.nextInt(); 开关(选择){ 案例1: viewAccountInfo(); 打破 案例2: 撤回(); 打破 案例3: 增加资金(); 打破 案例4: System.out.println(“感谢您使用这个ATM!!!再见”); } } public void viewcountinfo(){ System.out.println(“账户信息:”); System.out.println(“\t--总余额:$”+总余额); System.out.println(“\t--可用余额:$”+可用余额); DrawMain菜单(); } 公共作废保证金(金额){ System.out.println(“\n***请立即插入您的钱…***”); 总余额=总余额+折旧金额; availableBalance=availableBalance+depAmount; } 公共无效支票不足资金(整数取款金额){ if(总余额-提款金额,java,Java,但是,有人能帮我编写validateInput()方法,以便: 1.检查帐号和密码,并根据用户的文本文件进行验证。允许三次尝试 并帮助我更改它,以便: 如果存放多张支票,请将值保存在数组中,然后更新文本文件 存款、转账和取款修改文本文件 如果用户不是您银行的客户,任何提款都要额外收取2.00美元 根据文本文件检查余额 *我遇到问题的地方:*将文本文件合并到代码中,以便我可以对照它进行检查,并在需要时进行更新/编写validateInput()方法 我假设这将需要大量工作,因此非常感谢您的帮助……
我假设这将需要大量工作,因此非常感谢您的帮助……将文件读入Java有很多方法。我更喜欢使用以下方法: 读取文件:
import java.util.Scanner;
import userAccountInformation.csv;
public class AtmMachine {
private double availableBalance;
private double totalBalance;
Scanner input = new Scanner(System.in);
public int userAccount() {
System.out.print("Please enter your account number: ");
int account;
account = input.nextInt();
validateInput();
return account;
}
public int userPin() {
System.out.print("Please enter your pin number: ");
int pin;
pin =input.nextInt();
validateInput();
return pin;
}
public void startAtm() {
userAccount();
userPin();
drawMainMenu();
}
public void drawMainMenu() {
int selection;
System.out.println("\nATM main menu:");
System.out.println("1 - View account balance");
System.out.println("2 - Withdraw funds");
System.out.println("3 - Add funds");
System.out.println("4 - Terminate transaction");
System.out.print("Choice: ");
selection =input.nextInt();
switch(selection) {
case 1:
viewAccountInfo();
break;
case 2:
withdraw();
break;
case 3:
addFunds();
break;
case 4:
System.out.println("Thank you for using this ATM!!! goodbye");
}
}
public void viewAccountInfo() {
System.out.println("Account Information:");
System.out.println("\t--Total balance: $"+totalBalance);
System.out.println("\t--Available balance: $"+availableBalance);
drawMainMenu();
}
public void deposit(int depAmount) {
System.out.println("\n***Please insert your money now...***");
totalBalance =totalBalance +depAmount;
availableBalance =availableBalance +depAmount;
}
public void checkNotSufficientFunds(int withdrawAmount) {
if(totalBalance -withdrawAmount < 0)
System.out.println("\n***ERROR!!! Insufficient funds in you accout***");
else {
totalBalance =totalBalance -withdrawAmount;
availableBalance =availableBalance -withdrawAmount;
System.out.println("\n***Please take your money now...***");
}
}
public void addFunds() {
int addSelection;
System.out.println("Deposit funds:");
System.out.println("1 - $20");
System.out.println("2 - $40");
System.out.println("3 - $60");
System.out.println("4 - $100");
System.out.println("5 - Back to main menu");
System.out.print("Choice: ");
addSelection =input.nextInt();
switch(addSelection) {
case 1:
deposit(20);
drawMainMenu();
break;
case 2:
deposit(40);
drawMainMenu();
break;
case 3:
deposit(60);
drawMainMenu();
break;
case 4:
deposit(100);
drawMainMenu();
break;
case 5:
drawMainMenu();
break;
}
}
public void withdraw() {
int withdrawSelection;
System.out.println("Withdraw money:");
System.out.println("1 - $20");
System.out.println("2 - $40");
System.out.println("3 - $60");
System.out.println("4 - $100");
System.out.println("5 - Back to main menu");
System.out.print("Choice: ");
withdrawSelection =input.nextInt();
switch(withdrawSelection) {
case 1:
checkNotSufficientFunds(20);
drawMainMenu();
break;
case 2:
checkNotSufficientFunds(40);
drawMainMenu();
break;
case 3:
checkNotSufficientFunds(60);
drawMainMenu();
break;
case 4:
checkNotSufficientFunds(100);
drawMainMenu();
break;
case 5:
drawMainMenu();
break;
}
}
public static void main(String args[]) {
AtmMachine myAtm = new AtmMachine();
myAtm.startAtm();
}
}
validateInput() {
}
ArrayList accounts=new ArrayList();
试一试{
StringBuilder sb=新的StringBuilder();
BufferedReader br=新的BufferedReader(新文件读取器(“C:\\readFile.txt”);
弦线;
而((line=br.readLine())!=null){
账户。添加(新账户(行));
}
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}最后{
如果(br!=null){
试一试{
br.close();
}捕获(例外情况除外){
e、 printStackTrace();
}
}
}
您必须确定一种格式,然后使用标记器或其他解析器从已读入的字符串中提取信息。我建议您在项目中设置类(例如Account类-属性:AccountNumber、Pin、Balance等)。请记住添加一个Account(String)构造函数和一个toString()方法,以便轻松地从字符串创建帐户,并将帐户转换为字符串以存储在文本文件中
要将帐户写回您的文件(在每笔交易结束时或程序关闭时,由您选择),请执行以下操作:
BufferedWriter BufferedWriter=null
ArrayList<Account> accounts = new ArrayList<Account>();
try {
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader("C:\\readFile.txt"));
String line;
while ((line = br.readLine()) != null) {
accounts.Add(new Account(line));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception ex) {
e.printStackTrace();
}
}
}
试试看{
//构造BufferedWriter对象
bw=新的缓冲写入程序(新的文件写入程序(文件名));
//开始写入输出流
对于(int i=0;i…作业?如果是,请添加家庭作业标签。是你在2007年8月2日发布了相同的代码吗?:)我没有在javacodee.blogspot.com/2007/08/atm.htmlNo问题上发布代码。如果我的答案有帮助(或没有)请不要忘记对答案进行投票。在finally子句中有两个小注释。1:对于读者来说没有flush方法。2:对于通过API contract close()编写的编写器,意味着flush()(尽管额外的调用实际上不会伤害任何东西)。抱歉,从内存中编写这些内容,因此没有int
try {
//Construct the BufferedWriter object
bw = new BufferedWriter(new FileWriter(filename));
//Start writing to the output stream
for (int i=0; i<accounts.size(); i++) {
bw.write(accounts.get(i).toString());
bw.newLine();
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
//Close the BufferedWriter
try {
if (bw!= null) {
bw.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}