Java中的ATM机
我一直在努力找出我正在编写的程序出了什么问题。以下是我尝试做的全部描述: 使用编程练习9.7中创建的Account类模拟ATM机。在id为0、1、…、的数组中创建十个帐户,9美元,初始余额为100美元。系统提示用户输入id。如果输入的id不正确,请要求用户输入正确的id。接受id后,将显示主菜单,如示例运行中所示。您可以输入选项1查看当前余额,2取款,3存款,4退出主菜单。退出后,系统将再次提示输入id。因此,一旦系统启动,它将不会停止 该程序现在仅在每次购买后显示默认的$100。我意识到问题在于每次交易后都会重新创建我的帐户。我的问题基本上是我可以做什么,或者我可以在哪里重写帐户创建,这样我就避免了这个问题。我是编程新手,所以我还在努力。提前谢谢Java中的ATM机,java,arrays,methods,Java,Arrays,Methods,我一直在努力找出我正在编写的程序出了什么问题。以下是我尝试做的全部描述: 使用编程练习9.7中创建的Account类模拟ATM机。在id为0、1、…、的数组中创建十个帐户,9美元,初始余额为100美元。系统提示用户输入id。如果输入的id不正确,请要求用户输入正确的id。接受id后,将显示主菜单,如示例运行中所示。您可以输入选项1查看当前余额,2取款,3存款,4退出主菜单。退出后,系统将再次提示输入id。因此,一旦系统启动,它将不会停止 该程序现在仅在每次购买后显示默认的$100。我意识到问题在
import java.util.Date;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
mainMenuOptions();
}
//main menu option method
public static void mainMenuOptions(){
Scanner input = new Scanner(System.in);
//enter id
System.out.println("Enter an id: ");
int id = input.nextInt();
//create accounts
Account [] accounts = new Account[10];
//initialize 100 dollars
for (int i = 0; i < accounts.length; i++) {
accounts[i] = new Account(i, 100);
}
int index = -1;
for(int i = 0; i < accounts.length; i++) {
if(accounts[i].getid() == id) {
index = i;
i = accounts.length;
}
}
if(id <= 9){
//main menu
mainMenu();
//user enters choice in main menu
int enterchoice = input.nextInt();
if(enterchoice == 1){
System.out.println("The balance is " + accounts[index].getbalance());
mainMenuOptions();
}
else if(enterchoice == 2){
System.out.println("Enter an amount to withdraw ");
double amount = input.nextDouble();
//withdraw method
accounts[index].withdraw(amount);
mainMenuOptions();
}
else if(enterchoice == 3){
System.out.println("Enter an amount to deposit ");
double amount = input.nextDouble();
//deposit method
accounts[index].deposit(amount);
mainMenuOptions();
}
else if(enterchoice == 4){
mainMenuOptions();
}
}
else{
System.out.println("Please enter a correct id");
mainMenuOptions();
}
}
//main menu method
public static void mainMenu(){
System.out.println("Main menu"+"\n1:check balance"+"\n2:withdraw"
+"\n3:deposit"+"\n4:exit"+"\nEnter a choice");
}
}
class Account{
private int id = 0;
private double balance = 0;
private double withdraw = 0;
private double deposit = 0;
private double amount = 0;
Account(){
}
Account(int id, double balance){
this.id = id;
this.balance = balance;
}
public int getid(){
return this.id;
}
public void setid(int newid){
id = newid;
}
public double getbalance(){
return this.balance;
}
public void withdraw(double amount){
balance = balance - amount;
}
public void deposit(double amount){
balance = balance + amount;
}
}
导入java.util.Scanner
public class test {
private static Account[] accounts = new Account[10];
public static void main(String[] args) {
accounts();
mainMenuOptions();
}
//main menu option method
public static void mainMenuOptions() {
Scanner input = new Scanner(System.in);
int enterchoice = -1;
int id=-1;
while (enterchoice != 4) {
mainMenu();
System.out.println("Enter an id: ");
id = input.nextInt();
//enter id
System.out.println("Enter choice: ");
enterchoice = input.nextInt();
int index = -1;
for (int i = 0; i < accounts.length; i++) {
if (accounts[i].getid() == id) {
index = i;
break;
}
}
if (enterchoice == 1) {
System.out.println("The balance is " + accounts[index].getbalance());
} else if (enterchoice == 2) {
System.out.println("Enter an amount to withdraw ");
double amount = input.nextDouble();
//withdraw method
accounts[index].withdraw(amount);
} else if (enterchoice == 3) {
System.out.println("Enter an amount to deposit ");
double amount = input.nextDouble();
//deposit method
accounts[index].deposit(amount);
}
}
}
public static void accounts() {
//create accounts
//initialize 100 dollars
for (int i = 0; i < accounts.length; i++) {
accounts[i] = new Account(i, 100);
}
}
//main menu method
public static void mainMenu(){
System.out.println("Main menu"+"\n1:check balance"+"\n2:withdraw"
+"\n3:deposit"+"\n4:exit");
}
}
class Account{
private int id = 0;
private double balance = 0;
private double withdraw = 0;
private double deposit = 0;
private double amount = 0;
Account(){
}
Account(int id, double balance){
this.id = id;
this.balance = balance;
}
public int getid(){
return this.id;
}
public void setid(int newid){
id = newid;
}
public double getbalance(){
return this.balance;
}
public void withdraw(double amount){
balance = balance - amount;
}
public void deposit(double amount){
balance = balance + amount;
}
}
公共类测试{
私人静态账户[]账户=新账户[10];
公共静态void main(字符串[]args){
账户();
mainMenuOptions();
}
//主菜单选项方法
公共静态无效mainMenuOptions(){
扫描仪输入=新扫描仪(System.in);
int enterchoice=-1;
int id=-1;
while(enterchoice!=4){
主菜单();
System.out.println(“输入id:”);
id=input.nextInt();
//输入id
System.out.println(“输入选项:”);
enterchoice=input.nextInt();
int指数=-1;
对于(int i=0;i
每次“事务”完成时,您都会递归调用mainMenuOptions()。此函数用于每次重新创建所有帐户
您应该只创建一次帐户,最好是在main调用之后和mainMenuOptions()之前,在名为outside mainMenuOptions()的单独函数上创建。为此,您必须使accounts数组成为主类(test)的属性,或将其传递给mainMenuOptions()。尝试将accounts对象移到mainMenuOptions方法之外,并在类下声明它
在调用对象后,对象在方法末尾被销毁 您正在调用
main菜单选项()
,这将使所有帐户初始化回$100
我怀疑您希望保持程序运行,并且您正试图通过调用mainMenuOptions()
来实现这一目标
要保持程序运行,请尝试:
- 在调用一次get的单独方法中初始化
之外的帐户mainMenuOptions()
- 然后实际调用main方法,在该方法中您从用户接收一个选项,并且仅当用户输入一个退出选项-4时才退出
mainMenu();
System.out.println("Enter Option: ");
int option = input.nextInt();
while(option != 4) { // keep looping unless user wants to exit
// process the option [deposit, withdrawal etc]
mainMenu();
System.out.println("Enter Option: ");
int option = input.nextInt();
}
//at this point the user selected exit and you can terminate or do whatever
你可以试试这样的。这样做的目的是,在用户决定离开之前,不断向用户询问一个选项。你可以适应你的需要
编辑:
公共类测试{
私人静态账户[]账户=新账户[10];
公共静态void main(字符串[]args){
账户();
mainMenuOptions();
}
//主菜单选项方法
公共静态无效mainMenuOptions(){
扫描仪输入=新扫描仪(System.in);
int enterchoice=-1;
int id=-1;
while(enterchoice!=4){
主菜单();
System.out.println(“输入选项:”);
enterchoice=input.nextInt();
//输入id
System.out.println(“输入id:”);
id=input.nextInt();
int指数=-1;
对于(int i=0;imainMenu();
System.out.println("Enter Option: ");
int option = input.nextInt();
while(option != 4) { // keep looping unless user wants to exit
// process the option [deposit, withdrawal etc]
mainMenu();
System.out.println("Enter Option: ");
int option = input.nextInt();
}
//at this point the user selected exit and you can terminate or do whatever
public class test {
private static Account[] accounts = new Account[10];
public static void main(String[] args) {
accounts();
mainMenuOptions();
}
//main menu option method
public static void mainMenuOptions() {
Scanner input = new Scanner(System.in);
int enterchoice = -1;
int id=-1;
while (enterchoice != 4) {
mainMenu();
System.out.println("Enter choice: ");
enterchoice = input.nextInt();
//enter id
System.out.println("Enter an id: ");
id = input.nextInt();
int index = -1;
for (int i = 0; i < accounts.length; i++) {
if (accounts[i].getid() == id) {
index = i;
break;
}
}
if (enterchoice == 1) {
System.out.println("The balance is " + accounts[index].getbalance());
} else if (enterchoice == 2) {
System.out.println("Enter an amount to withdraw ");
double amount = input.nextDouble();
//withdraw method
accounts[index].withdraw(amount);
} else if (enterchoice == 3) {
System.out.println("Enter an amount to deposit ");
double amount = input.nextDouble();
//deposit method
accounts[index].deposit(amount);
}
}
}
public static void accounts() {
//create accounts
//initialize 100 dollars
for (int i = 0; i < accounts.length; i++) {
accounts[i] = new Account(i, 100);
}
}
//main menu method
public static void mainMenu() {
System.out.println("Main menu" + "\n1:check balance" + "\n2:withdraw" + "\n3:deposit" + "\n4:exit" + "\nEnter a choice");
}
public class test {
private Account [] accounts = new Account[10];
public static void main(String[] args) {
mainMenuOptions();
}
//main menu option method
public static void mainMenuOptions(){
Scanner input = new Scanner(System.in);
//enter id
System.out.println("Enter an id: ");
int id = input.nextInt();
//initialize 100 dollars
for (int i = 0; i < accounts.length; i++) {
accounts[i] = new Account(i, 100);
}
int index = -1;
for(int i = 0; i < accounts.length; i++) {
if(accounts[i].getid() == id) {
index = i;
i = accounts.length;
}
}
public class test {
public static void main(String[] args) {
Account [] accounts = new Account[10];
mainMenuOptions(accounts);
}
//main menu option method
public static void mainMenuOptions(Account accounts){
Scanner input = new Scanner(System.in);
//enter id
System.out.println("Enter an id: ");
int id = input.nextInt();
//initialize 100 dollars
for (int i = 0; i < accounts.length; i++) {
accounts[i] = new Account(i, 100);
}
int index = -1;
for(int i = 0; i < accounts.length; i++) {
if(accounts[i].getid() == id) {
index = i;
i = accounts.length;
}
}
//initialize 100 dollars
for (int i = 0; i < accounts.length; i++) {
accounts[i] = new Account(i, 100);
}
public class test {
private static Account [] accounts = new Account[10];
public static void main(String[] args) {
mainMenuOptions();
}
private final int EURO200 = 200;
private final int EURO50 = 50;
private final int EURO20 = 20;
private final int EURO10 = 10;
private final int EURO5 = 5;
210/200 = 1 //(rest 10) One 200 euro bill
10/10 = 1 //(rest 0) One 10 euro bill