المشاركة الأصلية كتبت بواسطة د. وسام محمد
يا حبذا لو شرحت الغرض من البرنامج والعبارات المستخدمة وتدفق البيانات حتى يفهم القارئ الغير خبير كالعبد لله ماذا يجرى في العالم. رمضان كريم
" من إللى غير خبير ههههه "
هو مش الشعار إللى على التى شيرت ده شعار الـ OpenJDK ^_^ ؟؟ و فنجان قهوة تقريبا ؟
رمضان كريم يا دكتور ^_^
لكن نعمل شرح البرنامج ببساطة و على قدر فهمى ^_^
كود:
import javax.swing.JOptionPane ;
الأمر هذا لإستيراد JOptionPane لإظهار لإظهار الرسائل من كائن مكتبة الرسوميات Swing من الكائن javax
كود:
/**
*
* @author sherif
*/
تعليقات بين /* */
إسم الدالة الرئيسية " هيكل برنامج الجافا "
كود:
public static void main(String[] args) {
كود الميثود الرئيسية للبرنامج " تبع الهيكل الأساسى أيضا لبرنامج الجافا "
إعلان عن متغير x من نوع العدد الصحيح
كود:
String Scount = JOptionPane.showInputDialog(null," How many times do you want to calculate ?");
هذا إعلان لمتغير نصى String Count بعد كده نحوله لمتغير عددى و الهدف من الـ Count هو معرفة عدد مرات الحساب
كود:
if(!Scount.matches("\\d+")){
JOptionPane.showMessageDialog(null, "you can not enter characters or lit it empty ");
JOptionPane.showMessageDialog(null, "If you did not enterd an integer number the program will end ." ,
"Caution" ,JOptionPane.WARNING_MESSAGE );
}
وضعت هذا الشرط و دالة
كود:
Scount.matches("\\d+")
هى دالة تعطى قيمة منطقية boolean لو النص يحمل غير الشرط المدخل و الحرف d يعنى إنه لابد إنها تكون حاملة لرقم صحيح فعندما لا تجد يكون قيمتها False فيعمل ما بداخل الشرط و أنا أريد العكس فوضعت علامة التعجب و هى تعنى لا أو غير Not
إستخداماتها الكاملة هنا
http://java.sun.com/j2se/1.4.2/docs/...lang.String%29
كود:
if(!Scount.matches("\\d+")){
Scount = JOptionPane.showInputDialog(null," How many times do you want to calculate ?");
}
إذا لم يتحقق الشرط تمر على الشرط الآخر و تكون محاولة أخيرة ..فلو أدخل فراغ أو حرف يفشل البرنامج لإنه هيمر على أمر آخر لتحويل النص لرقم فلو وجد أرقام تعطى خطأ
كود:
int wcount = Integer.parseInt(Scount) ;
هنا عملية التحويل لرقم صحيح
هذا المتغير للحاجة
كود:
int correctanswer = 0 ;
int wronganswer = 0 ;
String output = "";
مفهوم
كود:
while (count<=wcount){
بداية الحلقة التكرارية while و شرطها هو العدد المدخل من قبل المستخدم
كود:
// Generate two random numbers
int num1 = (int)(Math.random() * 10) ;
int num2 = (int)(Math.random() * 10) ;
//swap greater number
if (num1<num2){
int temp = num2 ;
num2 = num1 ;
num1 = temp ;
}
هذه الفكرة من الكاتب و هى فكرة رائعة
عند توليد رقمين من الدالة Random يمكن أن يكون الرقم الأول أصغير و هو يريد عملية طرح بدون سوالب
فقام بعمل شرط و متغير محلى داخل if و قام بتبديل القيم .
كود:
//Take the answer
String Sanswer = JOptionPane.showInputDialog(null,"what is the answer of " + num1 + " - " + num2 + " ? ");
//No characters , No Empty
if(!Sanswer.matches("\\d+"))
JOptionPane.showMessageDialog(null, "you can not enter characters or lit it empty ");
نأخذ الإجابة و نعمل كشف لها هلى هى فارغة أو بحروف و هذه سيتم تكراراها لإن باقى الأوامر بالأسفل تحت بقية الأمر if فى الفرع else فإذا تحقق الشرط لا يمر على الأوامر الموجودة فى else و بالتالى يقوم بإعادة الحلقة مرة آخرى و العودة لنفس الأأمر حتى يتحقق الشرط " طبعا هذه أتعبتنى فكرتها لكنى أحسست بفرحة عند فهمها جيدا "
كود:
//check the answer
else{
int answer = Integer.parseInt(Sanswer);
String reply = "" ;
if (answer == (num1-num2)){
reply = " your answer is correct" ;
correctanswer++ ;
}
else {
reply = " you are wrong !" ;
wronganswer++ ;
}
هنا داخل الفرع else نكشف عن الإجابة إذا كانت صحيحة أو خاطئة و إضافة رقم 1 فى كل مرة صحيحة و العكس .
كود:
JOptionPane.showMessageDialog(null, reply);
output += "\n" + num1 + " - " + num2 + " = " + Sanswer + " " +((num1 - num2 == answer) ? "Correct" : "Wrong") ;
هذا الأمر يقوم بإضافة إلى المخرج output هذه الجملة مع كل مرة تكرارية و هذا الأمر
كود:
((num1 - num2 == answer) ? "Correct" : "Wrong")
مثل
كود:
if (x > 0)
y = 1
else
y = -1;
كود:
y = (x > 0) ? 1 : -1;
و هو أمر مختصر و جميل
كود:
//The Loop Control
count++;
الحلقة التكرارية بدون قيد ستظل تتكرر و هذا هو المتحكم فيها يزداد مع كل مرة يمر فيها " خلال else فقط "
}
}
كود:
//End of loop
JOptionPane.showMessageDialog(null, output + "\n" + "The Correct answers is " + correctanswer + "\n" + "The wrong answers is " + wronganswer);
}
}
نهاية الدالة و يعطى المخرج النهائى