برنامج جافا بسيط تطبيق و إضافة
السلام عليكم
السلام عليكم و رحمة الله و بركاته
قمت بتطبيق برنامج من كتاب Introduction.to.Java.Programming.Comprehensive.Ver sion.6th.Edition
أول مرة كنت أنظر للمثال كثيرا ..
هذه المرة كتبته بمفردى بعد أن تركت القراءة فى الكتاب و فى الجافا مدة تزيد عن أسبوعين..
فكتبت و أضفت و تعبت من كتر التفكير ^_^ " البرمجة ديه متعبة "
ده المثال فى الكتاب
الأرقام موجودة فى الكتاب أنا أخذته كوبى من الكتاب
كود:
1 import javax.swing.JOptionPane;
2
3 public class SubtractionTutorLoop {
4 public static void main(String[] args) {
5 int correctCount = 0; // Count the number of correct answers
6 int count = 0; // Count the number of questions
7 long startTime = System.currentTimeMillis();
8 String output = "";
9
10 while (count < 10) {
11 // 1. Generate two random single-digit integers
12 int number1 = (int)(Math.random() * 10);
13 int number2 = (int)(Math.random() * 10);
14
15 // 2. If number1 < number2, swap number1 with number2
16 if (number1 < number2) {
17 int temp = number1;
18 number1 = number2;
19 number2 = temp;
20 }
21
22 // 3. Prompt the student to answer "what is number1 – number2?"
23 String answerString = JOptionPane.showInputDialog
24 ("What is " + number1 + " - " + number2 + "?");
25 int answer = Integer.parseInt(answerString);
26
27 // 4. Grade the answer and display the result
28 String replyString;
29 if (number1 - number2 == answer) {
30 replyString = "You are correct!";
31 correctCount++;
32 }
33 else
34 replyString = "Your answer is wrong.\n" + number1 + " - "
35 + number2 + " should be " + (number1 - number2);
36 JOptionPane.showMessageDialog(null, replyString);
37
38 // Increase the count
39 count++;
40
41 output += "\n" + number1 + "-" + number2 + "=" + answerString +
42 ((number1 - number2 == answer) ? " correct" : " wrong");
43 }
44
45 long endTime = System.currentTimeMillis();
46 long testTime = endTime - startTime;
47
48 JOptionPane.showMessageDialog(null,
49 "Correct count is " + correctCount + "\nTest time is " +
50 testTime / 1000 + " seconds\n" + output);
51 }
52 }
http://www.copypastecode.com/9205/
لو وضعت فيه حروف يفشل أو لو تركت الخانة فارغة يفشل أيضا
بعد الأستفسار عرفت دالة String.matches و إستخدمتها و جعلت البريمج يطلب عدد المرات المطلوب حسابها
و الكود الجديد هنا بشكل منسق
MathTest | Copy Paste Code
رابط البريمج
http://ibnyassen.googlepages.com/MathTest.zip
طبعا لازم تكون مركب على الجهاز
java runtime environment
Download Free Java Software - Sun Microsystems
http://www.java.com/en/download/index.jsp
رد : برنامج جافا بسيط تطبيق و إضافة
يا حبذا لو شرحت الغرض من البرنامج والعبارات المستخدمة وتدفق البيانات حتى يفهم القارئ الغير خبير كالعبد لله ماذا يجرى في العالم. رمضان كريم
رد : برنامج جافا بسيط تطبيق و إضافة
آسف جدا ^_^
المنتدى كان بيعطينى رسالة خطأ فنسيت أكتب أشياء ^_^
البرنامج بيسألك فى الأول عن كم مرة تريد الحساب ؟
ثم يعطيك رقمين و يسألك عن ناتج طرحهم ..ثم يحسب لك عدد المرات الصحيحة و المرات الخاطئة ^_^
كود البرنامج .. نسيت ان أضع الرابط فى ألأعلى
http://www.copypastecode.com/9197/
رد : برنامج جافا بسيط تطبيق و إضافة
البرنامج كان فيه خطأ ..
عدلت الكود
http://www.copypastecode.com/9260/
رد : برنامج جافا بسيط تطبيق و إضافة
اقتباس:
المشاركة الأصلية كتبت بواسطة د. وسام محمد
يا حبذا لو شرحت الغرض من البرنامج والعبارات المستخدمة وتدفق البيانات حتى يفهم القارئ الغير خبير كالعبد لله ماذا يجرى في العالم. رمضان كريم
" من إللى غير خبير :D ههههه "
هو مش الشعار إللى على التى شيرت ده شعار الـ OpenJDK ^_^ ؟؟ و فنجان قهوة تقريبا :D ؟
رمضان كريم يا دكتور ^_^
لكن نعمل شرح البرنامج ببساطة و على قدر فهمى ^_^
كود:
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);
}
}
نهاية الدالة و يعطى المخرج النهائى
رد : برنامج جافا بسيط تطبيق و إضافة
كفيت ووفيت وفي انتظار المزيد من المشاركات، لعلنا نشاهد متخصص في برمجة جافا قريباً معاً
رد : برنامج جافا بسيط تطبيق و إضافة
اقتباس:
المشاركة الأصلية كتبت بواسطة د. وسام محمد
كفيت ووفيت وفي انتظار المزيد من المشاركات، لعلنا نشاهد متخصص في برمجة جافا قريباً معاً
الله المستعان و دعواتك بالتوفيق
i
كان فيه خطأ فى البرنامج و قمت بتحديث الرابط