في الشيفرة المرفقة، يظهر لدينا صفحة الكود لبرنامج يقوم بجمع رقمين تم إدخالهما من قبل المستخدم باستخدام واجهة المستخدم في وحدة التحكم. ومع ذلك، يبدو أن هناك خطأ قد حدث، حيث تظهر رسالة خطأ تفيد “لا يمكن إجراء إشارة ثابتة إلى حقل غير ثابت”. هذا الخطأ يشير عادة إلى محاولة استخدام حقل غير ثابت (non-static) في سياق ثابت (static).
لفهم السبب وراء هذا الخطأ، يجب أن نتحقق من الكود بعناية. في هذه الحالة، يظهر أن الحقول number1
، number2
، وsum
تم تعريفها داخل الصنف Account
وليست كثابتة (static). ومع ذلك، في طريقة main
، التي هي طريقة ثابتة (static)، نحن نحاول الوصول إلى هذه الحقول بدون إنشاء كائن من الصنف Account
.
لحل هذا، يمكن إما تغيير حقول الصنف لتكون ثابتة (static
) أو إنشاء كائن من الصنف Account
واستخدامه للوصول إلى هذه الحقول. على سبيل المثال، يمكن تحويل الحقول إلى ثابتة وفقًا للشيفرة التالية:
javapublic class Account {
static int number1, number2, sum;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter your first number");
number1 = input.nextInt();
System.out.println("Enter your Second number");
number2 = input.nextInt();
sum = number1 + number2;
System.out.println("Your Answer is" + sum);
input.close();
}
}
وبعد تحديث الشيفرة بهذه الطريقة، يجب أن يتم تشغيل البرنامج بدون أي أخطاء تتعلق بالإشارة الثابتة والغير ثابتة.
المزيد من المعلومات
بالطبع، دعونا نوسع قليلاً على الشيفرة ونقدم بعض التوضيحات حول الكود المقدم. في الكود الحالي، نقوم بإنشاء صنف يسمى Account
، والذي يحتوي على ثلاثة حقول (number1
، number2
، و sum
) وطريقة ثابتة (main
) لتنفيذ البرنامج.
الصنف Scanner
يستخدم للقراءة من وحدة التحكم باستخدام System.in
. يتم استخدامه للحصول على إدخال المستخدم لرقمين (number1
و number2
). بعد ذلك، يتم إجراء عملية جمع لهما وتخزين الناتج في الحقل sum
. الناتج النهائي يتم طباعته إلى وحدة التحكم.
من الجدير بالذكر أن استخدام Scanner
يستدعي ضرورة إغلاق الـScanner بعد الانتهاء من استخدامه باستخدام input.close()
لتجنب تسرب الموارد.
كمكمل للشيفرة، يمكن إضافة مزيد من التحسينات مثل التحقق من صحة الإدخال، أو إضافة رسائل توجيهية لتوجيه المستخدم إلى كيفية استخدام البرنامج بشكل صحيح.
على سبيل المثال:
javaimport java.util.Scanner;
public class Account {
static int number1, number2, sum;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter your first number:");
number1 = input.nextInt();
System.out.println("Enter your second number:");
number2 = input.nextInt();
sum = number1 + number2;
System.out.println("The sum of " + number1 + " and " + number2 + " is: " + sum);
input.close();
}
}
هذا الشيفرة يعزز قليلاً التواصل مع المستخدم ويقوم بالتحقق من صحة الإدخال بطريقة بسيطة.