0

だからここに私のソースコードがあります:

import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
public class ATM {

String names []= {"Nikhil", "Furrqaan", "Raj", "Saron", "Abishiek", "Aditya"};
static int pin_no;static int card_no;
static int card[]={1806978,1244668,5769124,7658301,6571354,5155499};
static int pin[]={4444, 3333, 2222, 1111, 6666, 7988};
int balance []={17867, 23345, 24670, 37532, 43637, 37356};
int account[]={219075286,156482798,456482748,465295772,665793758,565738957};
int f,ch,z;
static int r = 0;
static int opt=0;
Scanner s=new Scanner(System.in);
public static void main(String args []) {
    int pincode=0;      
    int repeat=0;   
    ATM k=new ATM();
    do{
    k.info();
    k.login();
    for(int choice=0;choice<=5;choice++)
    if(card_no==card[choice] && pin_no==pin[choice]){
    k.menu(choice);
    break;
    }else{
    System.out.println("Wrong card no. or pincode");
    break;
    }
    k.End(repeat);
    }while(k.End(repeat)==0);

}

   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("");
   }

  void login (){
   System.out.println("                  >> Enter card number - ");
   card_no=s.nextInt();
   System.out.println("                  >> Enter pin number - ");
   pin_no= s.nextInt();
  }

void menu (int choice){
    System.out.println("                  Welcome "+names[choice]);
    System.out.println("                  Your Account no: is " + account[choice]);
    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(choice);
        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(choice);
    }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...");
  }
}
 int End(int repeat){
    ATM k=new ATM();
    System.out.println();
    System.out.println("                      What would you like to do next?           ");
    System.out.println("                      [1]. Enter main menu.                     ");
    System.out.println("                      [2]. Exit.                                ");
    int option=s.nextInt();
    switch (option){
    case 1:
        repeat=0;
        break;
    case 2:
        repeat=1;
        break;
    default:
        System.out.println("Please check input.");
    }
    return repeat;
   }
 }  

カード番号と暗証番号の組み合わせは、最初の組み合わせだけが有効です。それ以外の場合は、「間違ったピンコードまたはカード番号です」などのエラー メッセージが出力されます。そして、プログラムの最後の関数 (void 繰り返し) は、「次に何をしますか?」を出力します。パート2回。どんな助けでも大歓迎です。

4

3 に答える 3

2

2番目の問題から始めましょう。End メソッドを 2 回呼び出しています。したがって、2 回印刷されるのも不思議ではありません。

k.End(repeat);
}while(k.End(repeat)==0);

else の部分でもループを壊しているため、最初の組み合わせでのみ機能します。したがって、2 番目以降の値はチェックされません。

for(int choice=0;choice<=5;choice++)
if(card_no==card[choice] && pin_no==pin[choice]){
k.menu(choice);
break;
}else{
System.out.println("Wrong card no. or pincode");
break;
}
于 2013-10-27T07:39:59.970 に答える
0

k.End(repeat); 1 行のコードをコメント化します。上記の状態で試してみてください。その後、一度だけ表示されます。

//k.End(repeat);
    } while (k.End(repeat) == 0);
于 2013-10-27T07:47:09.010 に答える
0

ここで何が問題なのかすぐにはわかりませんが、さらに 2 つの一般的な観察結果があります。

1)。これをすべて書いてからテストを開始しないでください。より小さな部分で作業します。login() 関数をテストして、ユーザーが入力した 2 つの数字を確実に返すか? 自信がついたら、これらの 2 つの数値を配列に対して検証するなどのテストを行います。

2)。デバッガーを使用します。コードをステップ実行していくつかの変数を調べるだけで、何が起こっているかがすぐにわかります。

于 2013-10-27T07:40:07.000 に答える