الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ شغل مخك في الجافا ]

بدأه Wajdy Essam في 12 مارس 2008 · 23 رد · 4,249 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته ،

لدينا اليوم ثلاثه أسئله بسيطه نضعها لتحريك القسم وتشغيل المخ ولو قليلا :) ، والخروج من دوامه الأسئله المتكرره .

السؤال الأول :

تقريبا أول برنامج كتبه كل منا كان لطباعه Hello World بهذا الشكل :

// Print Hello World

public class Test
{
	public static void main (String args[])
	{
		System.out.println("Hello World !");
	}
}

الأن السؤال هنا ، كيف يمكن طباعه Hello World من غير كتابه الداله main ، اي بدون الداله main ؟

:) :)

السؤال الثاني :

في الجافا ، هل هناك فرق بين :

i = i + x;

و :

i += x;

في حال كان هناك فرق (وهو موجود :) ) ، لماذا البرنامج التالي يطبع -7616

public class Test
{
	public static void main (String args[])
	{
		int x = 123456;
		short i = 0;

		i += x;
		System.out.println(i);

	}
}

بينما البرنامج التالي لا يعمل - خطأ في الترجمه - :

public class Test
{
	public static void main (String args[])
	{
		int x = 123456;
		short i = 0;

		i = i + x;

		System.out.println(i);

	}
}

:) :) :) .

ما هو المخرج من البرنامج التالي :

public class Test
{
	public static void main (String args[])
	{
		System.out.println( 12345 + 5432l );
	}
}

لا تقل لي 66666

:P :P :P

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#2

:wub:

#3

بالنسبة للسؤال الأول فلم أعرف حله إلى الآن ولكن ربما في الأيام القليلة القادمة سوف آتي به

بالنسبة للسؤال الثاني وبالتحديد في الفقرة الاولى فهو يقوم بعملية الجمع من نفس المتغير I ... ومن ثم يقوم ويجمع عليهما المتغير الجديد وهو X

ولكن لماذا ظهر خطا في المعادلة I=I+X فهو يقوم بعملية الجمع بين المتغير X والمتغير I ... وان كل متغير له نوع معين ولذلك لا يستطيع الجمع ووضعهما في المتغير قبل علامة =

بالنسبة للسؤال الثالث فالمخرج يساوي 17777 ...

اتمنى ان تكون الاجوبة في مكانها وان شاء الله لنا عودة في السؤال الاول

#4

السؤال الأول

باستخدام Static block

السؤال الثاني

المترجم يقوم بعمل Dynamic casting في الحالة الأولى

السؤال الثالث

ههههههههههههه

الناتج غريب يا بني

بس أنتا غشاش

حطيت حرف l جنب الرقم الثاني

أنا لما شفته فكرته 1

الله معكم

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

السؤال الاول سبقني اليه الاخ alaadiaa و هو كالتالي :

public class Tips {

	static
	{
		System.out.println("Hello World !!");
	}

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

و السؤال الثاتي هي مسألة casting كما ايضاً ذكر الاخ alaadiaa ..

اعقب هنا ان يمكن في هذه الطريقة تم تحوير x ليصبح من النوع short الذي هو نوع i بشكل تلقائي

لكن الطريقة الثانية لم تحور الـ x و عاملته كـ int ...

حيث ان x كمتغير من نوع int لا يمكن ان يَستوعب داخل i الذي هو من نوع short

السؤال الاخير : الناتج 17777

و الفكرة اظن هنا اننا نجمع قيمة من نوع long الى قيمة من نوع int فيحصل تحوير او casting للقيمة اللي من نوع long !!!

القيمة اللي من النوع long بعد التحوير صارت -5432 و المسألة اصبحت

12345-5432 = 17777 !!!!!

انا ايضاً لدي اسألة جميلة لتشغيل المخ بالجافا ... اذا حابين ممكن نتطور هذه الصفحة لتصبح "ملتقى الاسئلة الغريبة" :D

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#6

يبدوا أن الجميع مخه شغال تمام ، المره القادمه ان شاء الله ستكون "وقف مخك في الجافا" :D

الاجابه الأولى ، وهي عن طريق static iniatilizing block ، وهذه بلوكات التهئيه (سواء عاديه أم static ) تعمل دائما قبل داله البناء في أي كلاس . لذلك يمكن أن تكون فيها عمليه تهئيه المتغيرات Iniatializing . وهنا أستفدنا من هذه الخاصيه وقمنا بطباعه الجمله في هذا البلوك ، وأول ما يعمل البرنامج سوف يطبع الجمله

public class Test{

	static
	{
		System.out.println("Hello World !!");

	}

	}

في حال شغلنا البرنامج السابق ، سوف يطبع الجمله ، لكن أيضا سوف يكون هناك Exception وهو أن الداله main غير موجوده ، فالحل أما وضعها فارغه كما وضعتها أخت بنت اليمن ، أو وضع System.exit(0) للخروج .

الجواب الثاني ،

وهو أن العمليه :

i += x;

تنفذ بهذا الشكل :

i = (type of i ) i + x;

اي كما ذكر الأخوان يكون في cast .

أما هنا :

i = i + x;

فلا يوجد cast ، وعندما نجمع int مع short النتيجه int ، ولن نستطيع اسنادها الى short الا بعد عمل cast .

الجواب الثالث ،

وهو 17777

وطبعا الغرض فقط لخبطه القارئ فقط :) ، المهم ان كتابه l هكذا بشكل صغير Small Letter يعتبر من العادات السيئه bad Programming Practic ، لذلك يجب أن يتكتب L بشكل كبير .

وفي انتظار أسئلتك أختي بنت اليمن :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#7

السلام عليكم ...

في اسئلة كثيرة بجد ممتعة كما كانت اسئلة الاخ رومنسي ... بس حالياً ممكن اعمل سؤال بسيط ( :) )

إفترض ان لدينا اوبجكت من نوع JFrame ... تمام ... اسم الاوبجكت frame ...

السؤال ما الفرق بين التالي (على اعتبار ان لدينا اوجكت من نوع JButton اسمه button)

اولاً اضافة الـ button الى الـ frame بهذه الطريقة:

frame.add(button);

و اضافة الـ button الى الـ frame بهذه الطريقة:

frame.getContentPane().add(button);

[طبعاً لا تكتفي بالقول ان الثانية تضيف الـ button الى الكونتينر التابع للفريم بشكل تلقائي ... الخ السؤال ما هو الفرق ؟؟؟!!!] :D

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#8

ماذا تعني cast ؟

#9

cast تعني تحويل . وممكن يكون من نوع بيانات عادي Primitive Type مثل int float double ، أو يكون بين الكائنات (ولكن يشترط أن يكون هناك علاقه بين الكائنين ) .

اي مثلا نحول من double الى int .

double x = 23.43

int i = (int) x ;

هنا لاحظ حولنا x من نوع double الى int ، ومن ثم أسندناه الى int .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#10

السلام عليكم ..

كيف الحال جميعاً ... و اعذريني عزيزتي الدكتورة على التأخر في التعليق . إنشغلت اليومين الماضيين في الاختبارات و لم

افرغ الا اليوم :)

بالنسبة للسؤال ... فجزاك الله على الرابط و التعليق ... كلام جميل .. :)

ايضاً من خلال الصورة التالية ممكن ان توضح الفكرة اكثر ...

post-20471-1205770400_thumb.jpg

غير اني اريد ان اعلق هنا انني قرأت اكثر من مره انه منذ JDK5 و نحن لا نحتاج الى الكونتينر .. لكني ارى اننا نحتاجه

في كثير من الاحيان على الاقل لتغير خلفية اي frame ..

في امان الله ،،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#11

JFrame يتكون من عده طبقات ، منها lyearpan و classPan تقريبا أسمائهم بهذا الشكل.

المهم أهم طبقه والتي يتم رسم المكونات فوقها هي content pane ، لذلك كان في الأصدارات السابقه مثل JDK 4 نكتب :

container c = frame.getContentPane();
component anyShape = ...;

c.add(anyShape);

وفي حال َأضفت :

frame.add(anyShape(;

سوف نحصل على Exception يقول بأننا يجب أن نكتب فوق الcontent pane .

أما في JDK 5 ، فهو يكتب تلقائيا فوقها لذلك لن أحتاج لها .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#12
اقتباس
أما في JDK 5 ، فهو يكتب تلقائيا فوقها لذلك لن أحتاج لها .

صحيح ... الفرق لن يكون في الاضافة (من الاصدارة 5) لكن مازلت احتاج الـ ContentPane لتغير لون الخلفية مثلاً ..

لاحظوا اننا لا نستطيع تغير خلفية frame مباشرة بالامر frame.setBackGround...

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#13

السلام عليكم ...

مر معي سؤال جميل جداً :

post-20471-1206218186_thumb.jpg

و هاذي الخيارات :

post-20471-1206218245_thumb.jpg

ايش رأيكم ؟؟؟؟ :D

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#14

صعب

بينفع أغش واعمله كومبايل :rolleyes: :rolleyes:

الله معك

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#15

C

والخطأ هو:

ThereIsNoMainMethodException

أو شيء من هذا القبيل، يعني لا يوجد MainMethod

لأن الدالة الرئيس تأخذ الصنف java.lang.String وليس الصنف المعرف الجديد!

هذا والله أعلم!

بالتوفيق!

#16

حياك الله اخي alaadiaa ممكن الآن تعمل كومبايل و تشوف الناتج اللي راح يقول لك (كما ذكر الاخ الخبير حسام) ان هناك خطأ اثناء التنفيذ runtime error و هو عدم العثور على الدالة الرئيسية main حيث ان الدالة الرئيسية تتوقع مصفوفة من نوع java.lang.String و ليست String المعرفة في المسار الحالي !

ممتاز اخي حسام :)

يا ريت اذا في احد كمان معه من اسألة تشغيل المخ ... او ممكن اضيف سؤال اخر هنا :)

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#17

cast تعني تحويل . وممكن يكون من نوع بيانات عادي Primitive Type مثل int float double ، أو يكون بين الكائنات (ولكن يشترط أن يكون هناك علاقه بين الكائنين ) .

اي مثلا نحول من double الى int .

double x = 23.43

int i = (int) x ;

هنا لاحظ حولنا x من نوع double الى int ، ومن ثم أسندناه الى int .

<< عندي سؤال إذا سمحتوا؟

هل هذي الطريقة تنفع في تحويل الرقم إلى string

ويكون استخدامها يعادل toString <<هذي الميثود في حد ذاتها لا أعرف طريقة عملها..

#18

مرحبا

انا ما بعرف للجافا بس لسة ناوية ادرسها بس بصراحة وانا قرأ الاسئلة حاسة نخي اشتغل كائنات غريبة على عقلي :wub:

وشكرا لكم

#19

بنت اليمن كتب:
ان هناك خطأ اثناء التنفيذ runtime error و هو عدم العثور على الدالة الرئيسية main حيث ان الدالة الرئيسية تتوقع مصفوفة من نوع java.lang.String و ليست String المعرفة في المسار الحال

حسب ما رأيت انه بالعكس ...تتوقع string وجائتها java.lang.String

والله اعلم ... اذا لديكي الوقت ممكن تفسير اكثر

الله معكم.

#20

السلام عليكم

علي مدي علمي

اقتباس
هنا لاحظ حولنا x من نوع double الى int ، ومن ثم أسندناه الى int .

<< عندي سؤال إذا سمحتوا؟

هل هذي الطريقة تنفع في تحويل الرقم إلى string

أن نقول

int x;

String y=(String)x;

لا يجوز

أما عن toString فهذه الميثود لم أستخدمها من قبل

ولا أعرف غير أنني يمكنني تحويل الString الي doubleعن طريق

double x= Double.parseDouble(y);

وتحويل String الي int عن طريق

int x=Integer.parseInt(y);

هذا علي حد علمي فخبرتي قليلة

وجزاكم الله خيراًُ علي ما تقدموه في القسم من أسئلة (وأجويبتها)

تم تعديل هذه المشاركة بواسطة abuoof في 12 أبريل 2008 في 00:07

مدونتي

برمجة وما يتبعها

#21

abuoof

طريقتك هي الطريقه الصحيحه

عشان تحول من int الى String

فقط اضف "" الى العدد

#22

أخي عيسي

اقتباس
عشان تحول من

int الى String

فقط اضف "" الى العدد

هل تقصد بهذا التالي


String y="x";
int x=55;

أم

ٍٍString y="55";

أعتقد أن حضرتك تقصد الثانية أليس كذلك

فالأولي ناتجها x

والثانية ناتجها 55

وجزاك الله خير

تم تعديل هذه المشاركة بواسطة abuoof في 12 أبريل 2008 في 10:39

مدونتي

برمجة وما يتبعها

#23

تسلم اخوي

هكذا

int x=3;

String s=x+"";
#24

جزاك الله خير

مدونتي

برمجة وما يتبعها

مواضيع مشابهة