البرمجة

إنشاء كائن Scanner واحد للاستخدام في جميع الكلاسات

السبب في الخطأ “non-static variable scan cannot be referenced from a static context” هو أن المتغير scan في الكلاس Customer ليس static، ولكن الدالة method() هي static. في الجافا، لا يمكنك الوصول إلى متغير غير static من داخل دالة static. هذا يعني أن scan يحتاج إلى أن يكون static أيضًا إذا كنت تريد الوصول إليه من داخل دالة static.

لحل هذا، يمكنك جعل المتغير scan static بالتالي:

java
import java.util.Scanner; class Program { public static void main(String[] args) { Customer customer = new Customer(); Customer.method(); } } class Customer { static Scanner scan = new Scanner(System.in); public static void method() { System.out.print("Name : "); String name = scan.nextLine(); } }

بهذه الطريقة، يمكنك الوصول إلى المتغير scan من داخل الدالة method() بدون أي أخطاء.

بالنسبة للسؤال الثاني، إذا كنت تريد استخدام كائن Scanner واحد فقط في جميع الكلاسات، يمكنك تمرير هذا الكائن عن طريق البناء (Constructor) لكل كلاس تريد استخدامه. لنفترض أن لديك كلاس آخر يسمى AnotherClass تحتاج إلى استخدام الكائن Scanner الذي تم إنشاؤه في الكلاس Program. يمكنك تمرير الكائن Scanner كوسيط بين الكلاسات كالتالي:

java
class Program { static Scanner scan = new Scanner(System.in); public static void main(String[] args) { Customer customer = new Customer(scan); AnotherClass anotherClass = new AnotherClass(scan); customer.method(); } } class Customer { static Scanner scan; public Customer(Scanner scan) { this.scan = scan; } public static void method() { System.out.print("Name : "); String name = scan.nextLine(); } } class AnotherClass { static Scanner scan; public AnotherClass(Scanner scan) { this.scan = scan; } public static void anotherMethod() { System.out.print("Enter something : "); String input = scan.nextLine(); } }

بهذه الطريقة، يمكن لجميع الكلاسات استخدام نفس الكائن Scanner الذي تم إنشاؤه في الكلاس Program.

المزيد من المعلومات

في الجافا، الكلمة الرئيسية static تستخدم لإنشاء متغيرات ودوال تنتمي إلى الكلاس نفسه بدلاً من تنتمي إلى كائن معين من الكلاس. عند إنشاء متغير static، يتم إنشاؤه مرة واحدة ويتم مشاركته بين جميع الكائنات من هذا الكلاس. وهذا يعني أنه يمكن الوصول إلى المتغير static من أي مكان داخل الكلاس بدون الحاجة إلى إنشاء كائن من الكلاس.

على النقيض، المتغيرات غير الـ static تنتمي إلى كائن معين من الكلاس. وهذا يعني أنه يجب إنشاء كائن من الكلاس للوصول إلى هذه المتغيرات.

بالنسبة للسؤال الثاني، يمكنك استخدام متغير static لإنشاء Scanner واحد يمكن استخدامه بواسطة جميع الكلاسات في البرنامج. يمكنك القيام بذلك عن طريق إنشاء المتغير في كلاس رئيسي وتمريره إلى الكلاسات الأخرى كمتغير static. وبذلك، يمكنك استخدام هذا المتغير في أي مكان في برنامجك.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!