-1

簡単なバンキング プログラムを作成しようとしています。

基本的な機能は次のとおりです。

1. open account - (open <amount>)-- returns account number
2.check balance - (balance <AccountNumber>)

次のコードはこれです。問題はこのコードのどこかにあると思うので、他のクラスと main() を含むクラスは投稿しません::

public class BankAccount {
private static int bankAccNoGen=1001;
private int balance;
private int bankAccNo;
private  int i=0;

BankAccount[] bankArray=new BankAccount[10];

public void openBankAccount(int openAmount){
    BankAccount ba =new BankAccount();
    ba.balance=openAmount;
    ba.bankAccNo=bankAccNoGen;

    bankArray[i] = ba;
    System.out.println("Account opened with the account number : "+bankArray[i].bankAccNo);
    System.out.println("Please note the account number for later use.");
    System.out.println("Balance for account no : "+bankArray[i].bankAccNo+" is : "+ bankArray[i].balance);
    ++bankAccNoGen;++i;

}
public void printBalance(int accNo){


    for(int i=0;i<10;i++){
        if(bankArray[i].bankAccNo==accNo){
            System.out.println("Account Number :"+ accNo +" currently has :"+bankArray[i].balance);
        }
    }

}

}

これを実行した後、次の方法で銀行口座を開設できます。

open 1000

出力:

Account opened with the account number : 1001
Please note the account number for later use.
Balance for account no : 1001 is : 1000

I can check balance by :

balance 1001

エラー:

 Exception in thread "main" java.lang.NullPointerException  at
 BankAccount.printBalance(BankAccount.java:27)  at
 ReadInput.inputRead(ReadInput.java:36)     at
 SimpleBank.main(SimpleBank.java:11)
4

4 に答える 4

0

配列の最初の要素 ( bankarray[i] = ba) のみを初期化し、印刷時に 10 個の要素すべてにアクセスしたいとします。bankarray[1]インデックス 1 ~ 9 の配列が であるため、アクセスすると失敗しますnull

すべての要素を初期化すると、機能します。

于 2013-07-17T16:41:51.397 に答える
0

あなたNullPointerExceptionは、初期化されていない のインデックスにアクセスしようとしたためですbankArray— の代わりに、BankAccountが含まれていますnull。(を参照して)nullとして扱うと、その例外がスローされます。BankAccountbankArray[i].bankAccNo

これを修正するには、どのインデックスが初期化されているかを追跡するか、より良い方法としてArrayListを使用する必要があります。

于 2013-07-17T16:43:02.293 に答える
0

これを変える:

if(bankArray[i].bankAccNo==accNo){

if (bankArray[i] != null && bankArray[i].bankAccNo == accNo) {
于 2013-07-17T16:43:12.460 に答える