استفسار بخصوص IF statement في الجافا

السلام عليكم

حسب معلوماتي عندما نقوم بكتابة if و else المعنى في حال تححقق شرط ال if لن يتم كتابة الشرط الذي داخل else والعكس صحيح.

هنا في هذا الكود الشرط الاول في if يتحقق ولكن ياخذ امر الطباعة من ال else هل ممكن توضيح لذلك ؟

هذه الحركة لا فائدة منها ، تسبب زيادة في حجم الكود بدون فائدة مما يجعل قراءة الكود أصعب ، اكتبه هكذا :

if(y % x != 0)
System.out.print(y + " "); 

والسبب انك تريد عدم عمل شيء عندما يكون باقي القسمة = 0 ، بالتالي اعكس الشرط كما فعلت انا وعندها لن تحتاج إلى else من الأساس

شكراً للرد ولكن الدكتور في الجامعة اعطانا حوالي 30 سؤال ويوجد امتحان اسببوع القادم فيجب علي فهم النقاط جميعها

عذرا لم أنتبه لما كنت تريده في البداية ،

لنراجع الأكواد خطوة خطوة .

حسب معلوماتي عندما نقوم بكتابة if و else المعنى في حال تححقق شرط ال if لن يتم كتابة الشرط الذي داخل else والعكس صحيح.

كلامك صحيح 100% لحد الآن .

هنا في هذا الكود الشرط الاول في if يتحقق ولكن ياخذ امر الطباعة من ال else هل ممكن توضيح لذلك ؟

بالنسبة لتنفيذ else فمن الطبيعي ان تنفذ وسأشرح لك السبب :

أولا هذا هو الشرط الخاص بك :

if(y % x == 0);

else
System.out.print(y + " ")

في الشرط تطلب التحقق من قيمة باقي قسمة y على x واذا كان يساوي صفراً فلا تفعل أي شيء ، فقد انهيت الشرط بفاصلة فاخبرت جافا بوجود Empty Statement اي الجملة الفارغة فلا ينفذ أي شيء ، لكن لو رأينا الجزء المهم وهو ما بعد else أي عندما يكون ناتج تنفيذ الشرط خاطئ (false)
ستجد انك طلبت طباعة قيمة y وبعدها فراغ .

لماذا طبعت بعض القيم ؟ لو راجعت المخرجات (ناتج الطباعة) ستجد أنها 1 3 5 7 9 لم طبعها ؟ ذلك لأنك وضعت الشرط بداخل جملة التكرار for ،

قيمة x هي 2

وقيمة y تتغير في كل مرة فهي تزداد في كل مرة ينفذ فيها ما بداخل الـ for ، سأراجعها معك قيمة قيمة .

في البداية تكون فيمة y = 0

ما الذي يحصل عندها ؟
عند قسمة صفر على اثنان سيكون الناتج صفر والباقي صفر(أي عدد زوجي يكون باقي قسمته على اثنان هي صفر)

بالتالي لن يفعل شيء هذه المرة .

في المرة التي بعدها تكون قيمة y = 1

اذا قسمت واحد على 2 يكون الباقي واحد بالتالي سينفذ ما بداخل else ويطبع 1 .

ثم تصبح قيمة y = 2 وباقي قسمتها على 2 = 0 بالتالي لن يفعل أي شيء وفي المرة التي بعدها ستصبح 3 والباقي لا يساوي صفرا لذلك سيطبع قيمة y وهي 3

… وهكذا حتى الرقم تسعة بما انك قلت y<10 اي سيقوم بالتكرار طالما y اقل من عشرة بالتالي اخر دورة له في الـ for ستكون عند الرقم 9 .

ولهذا تجده يطبع الأرقام ، فعندما يكون الشرط صحيح لن يطبع الرقم ثم تتغير قيمة y ويصبح الشرط خاطئ فيطبع الرقم … إلخ


في حالة أنك تريد أن يتوقف عن الدوران اذا كان الشرط صحيح فبدل وضع ; بعد if ضع كلمة break;

شكراً جزيلاً والله ما قصرت وشرحته بطريقة جداً بسيطة

العفو أخي وأي سؤال آخر يجول في خاطرك يمكنك أن تسأل وسنجيبك إن شاء الله

إن شاء الله شكراً …