Java خطا في المصفوفه .
banner
2018-09-17 , 08:45 مساءً
البتار2’s Avatar
البتار2

فعال

المشاركات:1721
التسجيل:Jun 2008
البتار2
السلام عليكم

عندي يظهر لي خطا بالمصفوفه بالرغم اني كتبت الكود كما يجب .

ما ادري وين الاشكاليه بالضبط


[QUOTE]
public static void main(String[] args) {

int x;

String[] arr = {"Ali","Khalid","Omar"};

try
{
for(x=0; x<=arr.length;x++)

{
System.out.println(arr[x]);
}

}
catch (Exception e)
{
System.out.println("XXX");
}








}

}[/QUOTE]
Enlarged Image
2018-09-17 , 08:45 مساءً
2018-09-18 , 08:28 صباحاً
sultan j’s Avatar
sultan j

فعال

المشاركات:1364
التسجيل:Apr 2011
sultan j
ماقريت الكود بسبب المحاذاه, حاول تستخدم ادراج كود مثل مو موضح في الصورة لون الأصفر
Image


+

وش الخطا الي ظاهرك , اكتبة هنا او صورة
2018-09-18 , 08:28 صباحاً
2018-09-18 , 09:24 مساءً
البتار2’s Avatar
البتار2

فعال

المشاركات:1721
التسجيل:Jun 2008
البتار2
sultan j كتب:
ماقريت الكود بسبب المحاذاه, حاول تستخدم ادراج كود مثل مو موضح في الصورة لون الأصفر
Image


+

وش الخطا الي ظاهرك , اكتبة هنا او صورة




[CODE]package aray;
public class Aray {
public static void main(String[] args) {







String[] arr = {"Ali","Bo","WRRQ"};
int x = arr.length;

try{
for(int i = 0; i<=x; i++)
{

System.out.println(arr[i]);
}
}
catch(Exception ex)

{}





}

}
[/CODE]
2018-09-18 , 09:24 مساءً
2018-09-18 , 11:53 مساءً
KH9778’s Avatar
KH9778

مشارك

المشاركات:393
التسجيل:Oct 2015
KH9778
البتار2 كتب:
[CODE]package aray;
public class Aray {
public static void main(String[] args) {







String[] arr = {"Ali","Bo","WRRQ"};
int x = arr.length;

try{
for(int i = 0; i<=x; i++)
{

System.out.println(arr[i]);
}
}
catch(Exception ex)

{}





}

}
[/CODE]



الكود شغال عندي وهذي الصورة

Image


عطنا صورة للخطأ او ايش مكتوب
2018-09-18 , 11:53 مساءً
2018-09-19 , 10:49 مساءً
iSR5’s Avatar
iSR5

Laptop Support Team

المشاركات:3378
التسجيل:Jul 2016
iSR5
البتار2 كتب:
السلام عليكم

عندي يظهر لي خطا بالمصفوفه بالرغم اني كتبت الكود كما يجب .

ما ادري وين الاشكاليه بالضبط



اعتقد ان فيه مشكلة عندك بنسخ الكود لذلك الكود اللي نسخته كان ناقص ..

بعموم الحال , الخطأ اللي عندك هو في ال for loop ..
لما تبي تستخدم الـ arr.length .. راح يعطيك طول المصفوفة ..
طول المصفوفة اللي عندك 3 .. وانت تبتدي بالعد بـ 0 ..
فبالتالي لابد الشرطة يكون ( اكس اصغر من طول المصفوفة) ..
فراح يبتدي معك بالعد من 0 الى 2 (وهي ثلاث عناصر) ..
لكن انت خليت الشرط (اكس اصغر من او يساوي طول المصفوفة) ..
فبالتالي راح يعد من 0 الى 3 (وهذي اربع عناصر) ... وراح يعطيك خطأ بأنه out of range .. لان المصفوفة من ثلاث عناصر فقط ! وانت طلبت عنصر رابع !


يعني هذي :
[CODE] for(x=0; x <= arr.length; x++)
{
System.out.println(arr[x]);
}[/CODE]

لازم تكون كذا :
[CODE]
for(x=0; x < arr.length; x++)
{
System.out.println(arr[x]);
}
[/CODE]
2018-09-19 , 10:49 مساءً
2018-09-19 , 11:28 مساءً
A B K’s Avatar
A B K

فعال

المشاركات:1126
التسجيل:Nov 2011
A B K
[CODE]public class MyClass {
public static void main(String args[]) {
String[] arr = {"Ali","Bo","WRRQ"};
int x = arr.length;

try{
for(int i = 0; i<=x; i++)
{

System.out.println(arr[i]);
}
}
catch(Exception ex)

{}
}
}
[/CODE]

شغال تمام
2018-09-19 , 11:28 مساءً
2018-09-19 , 11:56 مساءً
iSR5’s Avatar
iSR5

Laptop Support Team

المشاركات:3378
التسجيل:Jul 2016
iSR5
يا اخوان لما تستخدمون الـ try catch .. راح يعمل throw للخطأ ويكمل شغله ماراح يوقف .. وانت بحسب طريقتك بالكود إما تخليه يظهر الخطأ او تخفيه وتخليه يكمل ..

فمثلاً :

[CODE] String[] arr = {"Ali","Bo","WRRQ"};
for(int x = 0; x<=arr.length; x++)
{
System.out.println( arr[x]);
} [/CODE]

هذا راح يظهر خطأ بسبب ان المصفوفة فيها ثلاث عناصر .. والأكس بدأ من 0 الى 3 وهذي اربع عناصر ..
فراح يظهر خطأ يبين ان ال index out of range ..

لما تحطه داخل try catch بهالطريقة :
[CODE]
String[] arr = {"Ali","Bo","WRRQ"};

try
{
for(int x = 0; x<=arr.length; x++)
{
System.out.println(arr[x]);
}
}
catch(Exception ex)
{

}

[/CODE]
راح يتم الإمساك بالخطأ داخل الـ catch وراح يكمل لنهاية الكود .. لكن بما ان الكاتش مافيه اي شي (فاضي) ماراح يتم اظهار أي خطأ .. لان الخطأ تم حفظه بالكاتش لكن ماتم إظهاره ..
ولذلك كلكم تقولون ان الكود شغال مافيه شي ..


بينما لو يتم إضافة كود تعمل كنترول للكاتش بحيث تظهر الخطأ اللي يظهر .. بهالطريقة :

[CODE]
String[] arr = {"Ali","Bo","WRRQ"};

try
{
for(int x = 0; x<=arr.length; x++)
{
System.out.println(arr[x]);
}
}
catch(Exception ex)
{
System.out.println(ex);
}

[/CODE]

راح يتم عرض القيم كامله ولكن بالنهاية راح يظهر لك الخطأ ..
وهذا بسبب اننا اظهرنا قيمة الكاتش المخزنة ..

فالحل الفعلي للخطأ يجب أن يكون بهذي الطريقة :

[CODE]String[] arr = {"Ali","Bo","WRRQ"};

for(int x = 0; x < arr.length; x++)
{
System.out.println(arr[x]);
} [/CODE]
2018-09-19 , 11:56 مساءً
2018-09-21 , 09:23 صباحاً
البتار2’s Avatar
البتار2

فعال

المشاركات:1721
التسجيل:Jun 2008
البتار2
khalid9778 كتب:
الكود شغال عندي وهذي الصورة

Image


عطنا صورة للخطأ او ايش مكتوب


لأني اخفيت المشكله بتراي وكاتش .

شكرا لك حليت المشكله .
2018-09-21 , 09:23 صباحاً
2018-09-21 , 09:24 صباحاً
البتار2’s Avatar
البتار2

فعال

المشاركات:1721
التسجيل:Jun 2008
البتار2
iSR5 كتب:



اعتقد ان فيه مشكلة عندك بنسخ الكود لذلك الكود اللي نسخته كان ناقص ..

بعموم الحال , الخطأ اللي عندك هو في ال for loop ..
لما تبي تستخدم الـ arr.length .. راح يعطيك طول المصفوفة ..
طول المصفوفة اللي عندك 3 .. وانت تبتدي بالعد بـ 0 ..
فبالتالي لابد الشرطة يكون ( اكس اصغر من طول المصفوفة) ..
فراح يبتدي معك بالعد من 0 الى 2 (وهي ثلاث عناصر) ..
لكن انت خليت الشرط (اكس اصغر من او يساوي طول المصفوفة) ..
فبالتالي راح يعد من 0 الى 3 (وهذي اربع عناصر) ... وراح يعطيك خطأ بأنه out of range .. لان المصفوفة من ثلاث عناصر فقط ! وانت طلبت عنصر رابع !


يعني هذي :
[CODE] for(x=0; x <= arr.length; x++)
{
System.out.println(arr[x]);
}[/CODE]

لازم تكون كذا :
[CODE]
for(x=0; x < arr.length; x++)
{
System.out.println(arr[x]);
}
[/CODE]



وصلت الفكره . الله يعطيك العافيه يالامير .
2018-09-21 , 09:24 صباحاً
2018-09-21 , 09:48 مساءً
البتار2’s Avatar
البتار2

فعال

المشاركات:1721
التسجيل:Jun 2008
البتار2
A B K كتب:
[CODE]public class MyClass {
public static void main(String args[]) {
String[] arr = {"Ali","Bo","WRRQ"};
int x = arr.length;

try{
for(int i = 0; i<=x; i++)
{

System.out.println(arr[i]);
}
}
catch(Exception ex)

{}
}
}
[/CODE]

شغال تمام


صحيح شغال , لكن زي ما قال اخونا الكريم ان من صفر لـ 3 هم اربع خانات .
والمصفوفه تحتوي بس على 3

لذلك التصحيح هو ابقاء الشرط اصغر من عدد وليس اصغر او يساوي .


+++++++++
2018-09-21 , 09:48 مساءً