首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ATM项目,逻辑错误

ATM项目,逻辑错误
EN

Stack Overflow用户
提问于 2013-10-20 17:00:58
回答 2查看 528关注 0票数 0
代码语言:javascript
复制
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
public class ATM {
String names []= {"Nikhil", "Sam", "Raj", "Saron", "Abi", "Adi"};
int card[]={1806978,1244668,5769124,7658301,6571354,5155499};
int pin[]={4444, 3333, 2222, 1111, 6666, 7988};
int balance []={10000, 23345, 24673, 37532, 43637, 37356};
Scanner s=new Scanner(System.in);
int f,ch, z=0;
static int opt=0;

public static void main(String args []) {
    int enter=0;
    ATM k=new ATM();
    k.info();
    k.login(enter);
    int temp=k.login(enter);
    if(enter==1){
        k.menu(temp);
    }else{
        System.out.println("Wrong card no. or pincode");
    }

}


   void info(){
   Calendar calender = Calendar.getInstance();
   SimpleDateFormat dateformatter = new SimpleDateFormat(" dd EEEEEEEEE',' yyyy ");
   SimpleDateFormat timeformatter = new SimpleDateFormat(" hh:mm:ss a");
   System.out.println("");
   System.out.println("                  ****************************************************************       ");
   System.out.println("                  ***                         HSBC's  ATM                     ***         ");
   System.out.println("                  ****************************************************************       ");
   System.out.println("                  Date - "+ dateformatter.format(calender.getTime()));
   System.out.println("                  Time - "+timeformatter.format(calender.getTime()));
   System.out.println("                  ****************************************************************       ");
   System.out.println("");
   }

    int login(int enter){
   System.out.println("                  >> Enter card number - ");
   int card_no=s.nextInt();
   System.out.println("                  >> Enter pin number - ");
   int pin_no= s.nextInt();
   for (int i=0;i<=5;i++){

    if (card [i]==card_no && pin[i]==pin_no)
           enter=1;
           z=i;

    }
   return z;
   }
void menu (int temp){
    System.out.println("                  Welcome "+names[temp]);
    System.out.println("                  Your Card no: is " + card[temp]);
    System.out.println("                  ###############################################        ");
    System.out.println("                  >>> [1]. Cash Withdrawal ");
    System.out.println("");
    System.out.println("                  >>> [2]. Fast Cash ");
    System.out.println("");
    System.out.println("                  >>> [3]. Cash Deposit ");

     opt=s.nextInt();

    switch (opt){
    case 1:
        Calendar calender = Calendar.getInstance();
        SimpleDateFormat dateformatter = new SimpleDateFormat(" dd'/'MM ");
        SimpleDateFormat timeformatter = new SimpleDateFormat(" HH:mm ");
        ATM k=new ATM();
        int ammount;
        System.out.println("                  ==========================  ");
        System.out.println("                  CASH WITHDRAWAL ");
        System.out.println("                  ==========================  ");
        System.out.print("                    Enter amount to withdraw - Rs.");
        ammount=s.nextInt();
        System.out.println("                  ::::::::::::::::::::::::::::::::::::::::::::::");
        System.out.println("                  Please wait while we process your request...");

 if (ammount>balance[z]){
        System.out.println("                  You do not have sufficient balance in your account.");
        k.menu(temp);
        for(z=1;z<=1000000000;z++)
        System.out.print("\f");
 }else if (ammount>25000){
        System.out.println("                  The daily limit for cash withdrawal is Rs.25000 .");
        k.menu(temp);
 }else{
        balance[z]=balance[z]-ammount;

        System.out.println("");
        System.out.println("                  You have withdrawn Rs."+ammount+" from your account.");
        System.out.println("                  Please collect the cash.");
        System.out.println("                  Current Balance - Rs."+balance[z]);
        System.out.println("                  ::::::::::::::::::::::::::::::::::::::::::::::");
       }
        break; 
    case 2:
        int fast[]={100,500,1000,5000};
        System.out.println("                  ==========================  ");
        System.out.println("                  FAST CASH WITHDRAWAL ");
        System.out.println("                  ==========================  ");
        System.out.println("                  Please select a desired amount.");
        System.out.println("                  (1) Rs. 100 ");
        System.out.println("                  (2) Rs. 500 ");
        System.out.println("                  (3) Rs. 1000 ");
        System.out.println("                  (4) Rs. 5000 ");
        System.out.print("                     Your choice ? ");
        ch=s.nextInt();
        if (fast[ch-1]>balance[z])
        {
        System.out.println("                  You do not have sufficient balance in your account.");
        }else{
            switch(ch)
            {
            case 1:
            balance[z]=balance[z]-fast[ch-1];
            break;
            case 2:
            balance[z]=balance[z]-fast[ch-1];
            break;
            case 3:
            balance[z]=balance[z]-fast[ch-1];
            break;
            case 4:
            balance[z]=balance[z]-fast[ch-1];
            break;
            }
        }
        System.out.println("");
        System.out.println("                  You have withdrawn Rs. "+fast[ch-1]+" from your account.");
        System.out.println("                  Please collect the cash.");
        System.out.println("                  Current Balance - Rs."+balance[z]);
        System.out.println("                  ::::::::::::::::::::::::::::::::::::::::::::::");
        break;
    case 3:
        System.out.println("                  ==========================  ");
        System.out.println("                  CASH DEPOSIT ");
        System.out.println("                  ==========================  ");
        System.out.print("                  Enter amount to deposit - Rs.");
        int deposite =s.nextInt();
        System.out.println("                  ::::::::::::::::::::::::::::::::::::::::::::::");
        System.out.println("                  Please wait while we process your request...");
        System.out.println("");
        System.out.println("                  You have deposited Rs."+deposite+" to your account.");
        System.out.println("                  The amount will be credited shortly.");
        System.out.println("                  Current Balance - Rs."+balance[z]+" + Rs."+deposite);
        System.out.println("                  ::::::::::::::::::::::::::::::::::::::::::::::");
        break;
    case 4:
        System.out.println("                  ==========================  ");
        System.out.println("                  BALANCE ENQUIRY ");
        System.out.println("                  ==========================  ");
        System.out.println("                  Account Number - "+card[z]);
        System.out.println("                  Available Balance - Rs."+balance[z]);
        System.out.println("                  ::::::::::::::::::::::::::::::::::::::::::::::");
        System.out.println("                  Please collect the reciept...");
  }
}
}   

无论我输入什么作为pin号或卡号(即使它是正确的),我得到的信息是“错误的卡号或PIN码”,并且它还要求我输入卡号和pin号两次。任何关于改进代码的建议都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2013-10-20 17:07:38

这里有很多问题:

  1. 您没有在任何位置更改此int enter=0;enter值,因此它将始终为0,并且您的if条件将始终为false。
  2. 根据您的代码流,我假设您返回的10与D9方法中的值类似。H210 H111您正在将该值分配给D12,但您正在与逻辑错误的D13进行比较,您需要将其与false进行比较

还展示了你的login方法的代码,在此基础上我将修改答案。

票数 0
EN

Stack Overflow用户

发布于 2013-10-20 17:16:06

问题不在于登录方法中的for循环,而在于您传递的输入值。登录方法中设置的enter值设置为本地值,因此enter始终为0。请检查并纠正它应该可以正常工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19475633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档