يبدو أن لديك مشكلة في برنامجك البنكي بلغة Java حيث تحدث استثناء NullPointerException. هذا يحدث عندما تحاول الوصول إلى كائن يكون قيمته null. في حالتك، يحدث هذا في السطر التالي:
javaMyCustomers[NumofCustomers].openAccount(MyFirstName, MyLastName, openingBalence);
حيث MyCustomers[NumofCustomers]
قيمته null. هذا يحدث لأنك لم تقم بإنشاء كائن Customer جديد وتخزينه في MyCustomers[NumofCustomers]
قبل استدعاء openAccount()
عليه.
لحل هذه المشكلة، يمكنك تغيير createNewCustomer()
ليكون كما يلي:
javapublic void createNewCustomer()
{
String MyFirstName;
String MyLastName;
float openingBalence;
Scanner userInputScanner = new Scanner(System.in);
System.out.println("What is your first name? ");
MyFirstName = userInputScanner.nextLine();
System.out.println("What is your last name? ");
MyLastName = userInputScanner.nextLine();
System.out.println("What is your opening balence? ");
openingBalence = userInputScanner.nextFloat();
MyCustomers[NumofCustomers] = new Customer(); // إنشاء كائن جديد من العميل
MyCustomers[NumofCustomers].openAccount(MyFirstName, MyLastName, openingBalence);
NumofCustomers++; // زيادة عدد العملاء
}
بهذا التغيير، ستقوم بإنشاء كائن Customer جديد وتخزينه في MyCustomers[NumofCustomers]
قبل استدعاء openAccount()
عليه. كما يجب زيادة NumofCustomers
بعد كل إنشاء لعميل جديد.
المزيد من المعلومات
بالتأكيد! الخطأ الذي تواجهه يحدث في الدالة createNewCustomer()
حيث تحاول الوصول إلى MyCustomers[NumofCustomers]
دون تهيئتها بكائن من فئة Customer
، مما يؤدي إلى رمي استثناء NullPointerException
.
لحل هذه المشكلة، يجب عليك تهيئة MyCustomers[NumofCustomers]
بكائن جديد من فئة Customer
قبل استدعاء openAccount()
عليها. وبما أنك تحتفظ بعدد العملاء في المتغير NumofCustomers
، يمكنك استخدامه لتحديد الفهرس الصحيح لتهيئة العميل الجديد. يمكنك تعديل الدالة createNewCustomer()
كما يلي:
javapublic void createNewCustomer()
{
String MyFirstName;
String MyLastName;
float openingBalence;
Scanner userInputScanner = new Scanner(System.in);
System.out.println("What is your first name? ");
MyFirstName = userInputScanner.nextLine();
System.out.println("What is your last name? ");
MyLastName = userInputScanner.nextLine();
System.out.println("What is your opening balance? ");
openingBalence = userInputScanner.nextFloat();
// تأكد من أن لديك مساحة كافية في MyCustomers قبل إنشاء العميل الجديد
if (NumofCustomers < MyCustomers.length) {
MyCustomers[NumofCustomers] = new Customer(); // إنشاء كائن جديد للعميل
MyCustomers[NumofCustomers].openAccount(MyFirstName, MyLastName, openingBalence);
NumofCustomers++; // زيادة عدد العملاء بعد إنشاء العميل الجديد
} else {
System.out.println("Cannot create new customer. Bank is at maximum capacity.");
}
}
بهذا التعديل، ستتجنب استثناء NullPointerException
وستقوم بإنشاء عميل جديد بنجاح. كما تم إضافة التحقق من أن البنك لم يصل إلى الحد الأقصى لعدد العملاء قبل إنشاء العميل الجديد.