اذهب إلى المحتوى
  • 0

خطأ في قراءة عناصر المصفوفة في الجافا

Hanan Fahad2

السؤال

Recommended Posts

  • 0

يحدث الخطأ بسبب أن ناتج العملية الحسابية سيكون -6 وهو ليس بفهرس index صحيح، أي لا يمكن عمل التالي على سبيل المثال:

// هنا سيحدث خطأ لأن قيمة الفهرس سالبة
System.out.println(array[-6]);

العملية الحسابية في الكود لديكِ تساوي -6، حيث يتم عمل الضرب أولًا:

array[array[2]-array[3]*2]

// يتم حل الضرب أولًا
array[12 - 9*2]

array[12 - 18]
array[-6]

يمكنك عمل عملية الطرح أولًا من خلال وضعها في داخل قوسين كالتالي:

int [] array = {7, 2, 12, 9, 3, 10, 8, 3};

//                      سيتم حل عملية الطرح أولًا 
System.out.println(array[ (array[2]-array[3]) *2]);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبا
المشكلة أننا نحاول طباعة عنصر غير معرف في المصفوفة, لنحاول حساب العنصر الذي سوف يطبع
 

array[array[2]-array[3]*2]

أولا عملية الضرب أقوى من عملية الطرح اذا سوف ينفذ عملية الضرب أولا
سوف نضرب العنصر الذي لديه index رقم 3 في المصفوفة وهو يساوي 9
 

9*2=18

الآن لنحاول حساب عملية الطرح
العنصر الذي لديه index رقم 2 - 18 أي

12-18=-6

اذا نحن نحاول طباعة العنصر الذي لديه index رقم -6 وهذا العنصر غير موجود لذلك يظهر الخطأ
شكرا لك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 ساعات قال hanan fahad11:

يعني المصفوفات لايمكن ان تكون سالبه ويبدا العد من العكس 

في لغة جافا يتم التعامل فقط مع الدليل الموجب index أكبر أو يساوي 0.

في حال وضعنا قيمة سالبة كدليل لمصفوفة سوف يحدث خطأ و يتم رمي استثناء ArrayIndexOutOfBoundException.

للوصول للعنصر من الخلف (من النهاية) يمكننا طرح قيمة دليل العنصر من طول المصفوفة:

int x = 2;

System.out.println( array[array.length - x ] );

------

مثلا في لغة بايثون، تدعم اللغة الوصول للعنصر بالعكس باستخدام قيمة سالبة (غير متاحة في كل لغات البرمجة) 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...