2013-10-20 75 views
0
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號碼或卡號(即使它是正確的),我都會收到消息「錯誤的卡號或pincode」並且它還要求我提供卡號和密碼兩次。任何有關改進代碼的建議將不勝感激。ATM項目,邏輯錯誤

+1

1)使用一致的和邏輯的縮進代碼塊。代碼的縮進旨在幫助人們理解程序流程。 2)'int enter = 0; .. if(enter == 1){'我在這兩者之間的語句中看不到任何地方,'enter'的值在哪裏變化。你爲什麼期望它進入'else'? –

回答

0

這裏有相當多的問題:

  1. 沒有更改這個enter沒有地方所以這將是始終爲0,你的if條件將永遠假的int enter=0;值。
  2. 每你的代碼流我假設你是從k.login(enter);方法返回10這樣。
  3. 您正在將該值分配給int temp=k.login(enter);,但您正在與enter進行比較,這在邏輯上是錯誤的,您需要將其與temp進行比較。

同時顯示您的login方法的代碼,基於此我將修改答案。

+0

我不太確定我在「enter」變量的主函數中究竟要做些什麼。 – user2711784

0

問題不在於在登錄方法中的for循環,您傳遞的輸入值是問題所在。 在登錄方法設置的輸入值被設置爲本地值,輸入始終爲0。請檢查並糾正它應該工作的罰款