الوقت/التاريخ الآن هو الخميس يناير 23, 2020 9:19 am

4 نتيجة بحث عن nextint

[Java] التعامل مع كائن الادخال Scanner

أحد طرق الادخال فى الجافا استخدام الكائن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] والذى يمكنك استخدامة بسهولة لقراءة المدخلات من المستخدم فى البيئة غير الرسومية ويتم استخدامة بخطوات بسيطة على النحو التالى :

1_اسيراد الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] على النحو التالى :

الكود:
import java.util.Scanner;


2_إنشاء كائن جديد من الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ثم تعيين قيمته لمتغير. System.in

الكود:
Scanner input = new Scanner(System.in);


3_لقراءة المدخلات يمكنك استخدام الاساليب المختلفة للكائن Scanner ...فمثلا لقراءة نص كلمة واحدة فقط يمكنك استخدام الاسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و لقراءة جملة يمكنك استخدام الاسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أما لقراءة رقم صحيح يمكنك استخدام الاسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وبالمثل ، يقرأ الأسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الارقام العشرية على النحو التالى :

الكود:
import java.util.Scanner;

public class Javaapp {
 
    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);
        
        String name ;
        int age ;
        
        System.out.print("Enter your name : ");
        name = input.next();
        
        System.out.print("Enter your age  : ");
        age = input.nextInt();
        
        System.out.println();
        System.out.println("Your name : "+name);
        System.out.println("Your age  : "+age);
        input.close();
    }
}
من طرف NEXT
في الأربعاء مارس 13, 2019 1:01 pm
 
ابحث في: واجهة المستخدم الرسومية Java Swing
موضوع: [Java] التعامل مع كائن الادخال Scanner
المساهمات: 1
مشاهدة: 140

[Java] الطرق المختلفة لتوليد ارقام عشوائية فى الجافا random number by java

أهلا بكم

الرقم العشوائي يعني رقمًا مختلفًا في كل مرة يتم فيها تنفيذ التطبيق وتوفر [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] العديد من الطرق لإنشاء أرقام عشوائية ضمن نطاق معين لذلك فى هذا المقال سوف نتعرف سويا على تلك الطرق و كيفية استخدامها :

الطريقة الاولى : توليد ارقام عشوائية باستخدام الفئة Random

توفر الفئة java.util.Random الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التي يمكن أن تولد أرقام عشوائية فى نطاق رقم معين. حيث تأخذ هذه الطريقة عددًا صحيحًا كوسيطة. تمثل هذه القيمة الصحيحة الحد الأعلى للرقم العشوائي الذي سيتم إنشاؤه بواسطة هذه الطريقة ,تبدأ تلك الطريقة بتوليد رقم عشوائي من الرقم 0 حتى الحد الاعلى للرقم العشوائي الذى تم تمريرة اليها .

مثال : أكتب برنامج بلغة الجافا لتوليد ارقام عشوائية فى نطاق الرقم 50

الحل : لإنشاء رقم عشوائي بين 1 و 50 ، نقوم بإنشاء كائن من فئة java.util.Random واستدعاء طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الخاصة به مع 50 كوسيطة. سيؤدي هذا إلى إنشاء رقم بين 0 و 49 لذلك سنقوم باضافة  الرقم 1 إلى النتيجة مما سيجعل نطاق القيمة التي تم إنشاؤها من 1 إلى 50...على النحو التالى :

الكود:

import java.util.Random;

public class test {
 
 public static void main(String[] args) {
 
 
 Random randomGenerator = new Random();
 int randomInt = randomGenerator.nextInt(50) + 1;
 System.out.println("Random number generated is : " + randomInt);
 }
}


المخرجات :
Random number generated is : 29


مثال : أكتب برنامج بلغة الجافا لتوليد عدد 5 أارقام عشوائية فى نطاق الرقم 50

الحل : فى هذا المثال طلب عدد 5 ارقام عشوائية و ليس رقم واحد كما فى المثال السابق لذلك سوف نستخدم حلقة تكرارية لتنفيذ المطلوب على النحو التالى :
الكود:

import java.util.Random;

public class test {
 
 public static void main(String[] args) {
 
 
 Random randomGenerator = new Random();
                for(int i = 0; i < 5; i++) {
                int randomInt = randomGenerator.nextInt(50) + 1;
 System.out.println("Random number generated is : " + randomInt);  
                }
 
 }
}


المخرجات :

Random number generated is : 20
Random number generated is : 26
Random number generated is : 44
Random number generated is : 7
Random number generated is : 3


الطريقة الثانية : توليد ارقام عشوائية باستخدام الفئة Math

يحتوي الفئة java.lang.Math على الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الذي يولد قيمة عشرية من النوع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أكبر من 0.0 وأقل من 1.0 (0.9999) ، اذن النطاق الافتراضي لهذه الطريقة 0.0 حتى 1.0

مثال : أكتب برنامج بلغة الجافا لتوليد عدد 5 أارقام عشوائية

الحل :
الكود:

public class test {
 
 public static void main(String[] args) {
 
 
 
                for(int i = 0; i < 5; i++) {
                double randomDouble = Math.random();
 System.out.println("Random number generated is : " + randomDouble);  
               }
 
 }
}


المخرجات :

Random number generated is : 0.5399298565634371
Random number generated is : 0.3914851406177742
Random number generated is : 0.6582928867493553
Random number generated is : 0.02994586334518179
Random number generated is : 0.13342139597089198

وعلى الرغم من ان الطريقة اعلاه لها نطاق محدد لتوليد ارقام عشوائية باستخدامها الا انه يمكنك ضرب القيمة التي يتم إرجاعها بطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمقدار الذى تريدة وهذا يجعل نطاقها من 0.0 حتى الرقم الذى وضعته

مثال :أكتب برنامج بلغة الجافا لتوليد عدد 5 أارقام عشوائية فى نطاق الرقم 50 باستخدام Math.random

الحل :من أجل توليد رقم يتراوح بين 1 إلى 50 ، نضرب القيمة التي يتم إرجاعها بطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمقدار 50. وهذا يجعل نطاقها من 0.0 إلى 49.995 على النحو التالى :

الكود:

public class test {
 
 public static void main(String[] args) {
 
 
 
                for(int i = 0; i < 5; i++) {
                double randomDouble = Math.random()*50;
 System.out.println("Random number generated is : " + randomDouble);     
               }
 
 }
}


المخرجات :


Random number generated is : 36.098268352442915
Random number generated is : 37.77195830913475
Random number generated is : 46.46593180334226
Random number generated is : 3.1068847461841855
Random number generated is : 49.468128176594774


ولكن النتيجة السابقة ليست صحيحة 100% لانه عند ضرب القيمة التي يتم إرجاعها بطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمقدار 50. هذا يجعل نطاقها من 0.0 إلى 49.995 و ليس من 0.0 الى 50
و لحل هذه المشكلة نقوم باضافة الرقم 1. هذا يزيد من نطاقه من 1.0 إلى 50.995. إذا تم إرسال هذه النتيجة إلى متغير من نوع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ، فسيكون النطاق من 1 إلى 50 كما هو ظاهر على النحو التالى :

الكود:

public class test {
 
 public static void main(String[] args) {
 
 
 
                for(int i = 0; i < 5; i++) {
                double randomDouble = Math.random()*50+1;
                int no =( int )randomDouble;
 System.out.println("Random number generated is : " + no);  
               }
 
 }
}


و المخرجات على النحو التالى :

Random number generated is : 27
Random number generated is : 31
Random number generated is : 49
Random number generated is : 20
Random number generated is : 1


الطريقة الثالثة : توليد ارقام عشوائية باستخدام الفئة ThreadLocalRandom

قامت Java 7 بتوفير فئة جديدة تسمى java.util.concurrent.ThreadLocalRandom . يحتوي هذا الفصل على طرق لإنشاء أرقام عشوائية. هذه الفئة مناسبة لتوليد أرقام عشوائية في بيئات متعددة .

ThreadLocalRandom فئة ThreadLocalRandom على أسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الذي يأخذ [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] يمثلان قيم الحدود الدنيا والعليا ويقوم بإرجاع عدد صحيح بين هذه القيم. ستكون النتيجة بين الحد الأدنى  والحد الأعلى .

مثال : لتوليد رقم بين 1 و 50 ، تكون الحدود الدنيا والعليا التي تم تمريرها إلى هذه الطريقة هي 1 و 51 على التوالي.

الكود:

import java.util.concurrent.ThreadLocalRandom;

public class test {
 
 public static void main(String[] args) {
 
 
         for(int i = 0; i < 5; i++) {
   int randomInt = ThreadLocalRandom.current().nextInt(1, 51);
 System.out.println("Random number generated is : " + randomInt);
                  
          }
 
 }
}


المخرجات :

Random number generated is : 20
Random number generated is : 5
Random number generated is : 3
Random number generated is : 26
Random number generated is : 48
من طرف أحمد مناع
في الإثنين فبراير 04, 2019 7:30 am
 
ابحث في: التعامل مع حزم الجافا java package
موضوع: [Java] الطرق المختلفة لتوليد ارقام عشوائية فى الجافا random number by java
المساهمات: 0
مشاهدة: 216

حل اسئلة وتمارين بلغة جافا الجزء الثالث

الذي فهمته من حضرتك هو انك انشئت طريقة لكل حالة (طريقة لتوليد الارقام) لكن لم افهم محتواها وكيف انك وضغت في جزء البارميترات الخاص بها (stornumber) هل قصدت انك استدعيت الطريقة الثانية الخاصة بتخزين تلك الارقام...اما ماذا قصدت بالتحديد


أهلا بيك أخى الكريم

نعم اخى الكريم قد أنشئت طريقة لتوليد الارقام العشوائية بأسم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] .....معنى ذلك أن stornumber تلك هى اسم الطريقة و ليست بارميترات لطريقة اخرى .... و للتوضيح سنفترض أننا سنقوم بانشاء طريقة باسم stornumber ترجع برقم صحيح int ستكون بهذا الشكل :

الكود:
 static int Stornumbers(){
        
        }  


لكن فى مثالنا قمنا بانشاء طريقة باسم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ترجع بمصفوفة من نوع int لذلك تم كتابتها بالشكل التالى :

الكود:
 static int[] Stornumbers(){
        
         }


و الفرق بين الطرقتين القوسين [] و ربما ذلك جعل الامر يختلط عليك فى أن Stornumbers عبارة عن باراميتر لدالة اخرى و هذا ليس صحيح ...وان أحببت أن تضع لها بارامتيرات سيكون ذلك بين قوسين () على النحو التالى :

الكود:
static int[] Stornumbers(int f){
        
         }


ففى الطريقة اعلاه وضعنا بارامتير f من نوع int كما ظاهر اعلاه لكن فى مثالنا لا نتحتج اى بارمتيرات ....وكانت على النحو التالى :

الكود:
  static int[] Stornumbers(){
        
        
        Random rand = new Random();
        int randomInt;          
        int[] numbers = new int[5];
        
        
        for(int i = 0; i < numbers.length; i++) {
         randomInt = rand.nextInt(50) + 1;
         numbers[i] = (int)(randomInt);
        
        }
        
        
        int max = Arrays.stream(numbers).max().getAsInt();
        System.out.println("max number is : " + max);
    
    
          return numbers;
    }


و تعال نشرح محتواها :

_ السطر الاول

الكود:
 Random rand = new Random();


الفئة Random هى أحد الفئات الجاهزة التى تاتى مع حزم الجافا ولم اقم بانشائها ,تلك الفئة قادرة على توليد ارقام عشوائية فى نطاق معين وذلك باستخدام الطريقة nextInt التى تمتلكها ...لذلك قمنا بانشاء كائن جديد منها يسمي rand وهذا يعتبر ردا على استفسارك التالى :

وهل عبارة ()Random rand = new Random   تعني انشاء كائن عن فئة لم تذكرهاام ام ماذا...


_السطر الثاني :إنشاء متغير رقمي int باسم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لتخزين رقم عشوائي واحد به :
الكود:
 int randomInt;


_السطر الثالث : انشاء مصفوفة رقمية باسم numbers لتخزين عدد 5 ارقام عشوائية يتم توليدها لذلك تم تعين حجم المصفوفة بالرقم 5 على النحو التالى :
الكود:
int[] numbers = new int[5];


_السطر الرابع :حلقة تكرارية تبدء من الرقم صفر و تنهتى بحجم المصفوفة numbers :

الكود:
for(int i = 0; i < numbers.length; i++) {
        
        
        }


كما يمكنك انشاء الحلقة التكرارة اعلاه بوضع حجم المصفوفة مباشرة وهو الرقم 5 بدلا من numbers.length بالشكل التالى :

الكود:
 for(int i = 0; i < 5; i++) {
        
        }


داخل الحلقة التكرارية استخدمنا الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لتوليد رقم عشوائي فى نطاق الرقم 50 أى من الصفر لحد 50 و تخزين هذا فى المتغير  [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ...على النحو التالى :
الكود:
randomInt = rand.nextInt(50) + 1;


و بالتالى فى كل مرة تدور الحلقة سيتم توليد رقم عشوائى و تخزينة فى المتغير randomInt ...فمثلا فى الدورة الاولى توليد الرقم 10 مثلا يتم تخزينة فى المتغير randomInt ..ثم تبدء الدورة الثانية يتم توليد الرقم 25 ووضعة فى متغير randomInt الذى سيقوم بحذف الرقم 10 المخزن سابقا و تخزين الرقم الجديد 25 لذلك وجب علينا ان يتم وضع المصفوفة numbers التى قمنا بانشائها بداخل الحلقة التكرارية هى الاخرى و تمرير المتغير randomInt  اليها على النحو التالى :
الكود:
 for(int i = 0; i < numbers.length; i++) {
         randomInt = rand.nextInt(50) + 1;
         numbers[i] = (int)(randomInt);
        
        }


و بالتالى ففى كل حلقة دوران بدل ما المتغير randomInt يقوم بحذف القيمة التى بداخلة حتى يكون جاهز لاستقبال الرقم الجديد تقوم المصفوفة numbers باخذ القيم التى تاتى الية حتى تمتلاء تلك المصفوفة بعدد 5 ارقام ....ويمكنك اختصار جملة التكرار السابقة على النحو التالى :

الكود:
for(int i = 0; i < numbers.length; i++) {
         numbers[i] = (int)(rand.nextInt(50) + 1);
        }


فبدلا من وضع متغير وسيط لاستقبال الرقم العشوائي من الدالة nextInt ثم تخزينة فى المصفوفة numbers نجعل الدالة تخزن فى المصفوفة مباشرة كما ظاهر اعلاه

السطر الاول بعد الحلقة التكرارية :

الكود:
int max = Arrays.stream(numbers).max().getAsInt();
System.out.println("max number is : " + max);


الحصول على اكبر قيمة من القيم المخزنة فى المصفوفة numbers وطباعتها وتم ذلك من خلال استخدام الطريقة stream التابعة للفئة Arrays وباستخدام الاسلوب max().getAsInt نحصل على اعلى قيمة

ملحوظة :يوجد العديد من الطرق للحصول على اكبر قيمة باى مصفوفة كانت تلك واحدة منها

أخر سطر فى الكود وهو
الكود:
return numbers


يعنى ارجاع بيانات المصفوفة  numbers عند تنفيذ الطريقة Stornumbers ....وكل ما سبق كان لتوليد عدد 5 ارقام عشوائية و تخزينها فى مصفوفة و ايجاد وطباعة اكبر قيمة فيها و يعتبر ذلك ردا على استفسارك التالى :
اما الطريقة الثانية هل هي خاصة بخزن الارقام ووطباعتها ام الاولى الخاصة بالطباعة


و بالتالى فان الطريقة Stornumbers لتوليد الارقام العشوائية و تخزينها فى مصفوفة و ايجاد وطباعة اكبر قيمة بها أما الطريقة التى تسمي prinNO هى لطباعة محتوي المصفوفة اى عدد 5 ارقام عشوائية المخزنة بالمصفوفة

ثانيا ما دخل الstring بهذه القضية...وكذلك ياريت شرح ( String S = Arrays.toString) ...




حتى تتمكنك من طباعة محتويات مصفوفة توجد عدة طرقة منها مثلا عمل حلقة تكرارية للدوران على كل قيم المصفوفة ومن ثم طباعتها على النحو التالى :
الكود:
   int[] array = new int[] {1, 2, 3};
      
    for(int i = 0; i < array .length; i++) {
       System.out.println(" number is : " +array[i]);
        }      



وتوجد طريقة اخرى لطباعة محتويات مصفوفة باستخدام Arrays.toString التى تستخدم لعرض سلسلة نصية من بيانات مصفوفة وذلك عن طريق تمرير اليها مصفوفة رقيمة أو اى نوع بيانات اخرى فيتم تحويلها الى نص ويتم الفصل بين عناصر المصفوفة بالفاصلة , ومن ثم طباعتها بكل سهولة على النحو التالى :
الكود:
 int[] array = new int[] {1, 2, 3};
        
       System.out.println(" number is : " +Arrays.toString(array));


وهى الطريقة التى تم استخدامها فى مثالنا لكن بشكل مختلف....لذلك اننا لا نملك مصفوفة نقوم بتمريها الى Arrays.toString انما نملك طريقة Stornumbers التى تقوم بارجاع المصفوفة numbers المخزنة بها لذلك لا يمكن الطباعة مباشرة على النحو التالى :

الكود:
 System.out.println("Random number generated is : " + Arrays.toString(Stornumbers());


لذلك وجب علينا تعريف متغير من نوع String و ليكن باسم s وتنفيذ الطريقة Stornumbers باستخدام Arrays.toString ...ثم تتم عملية الطباعة بكل سهولة على النحو التالى :
الكود:
 String S = Arrays.toString(Stornumbers());
    System.out.println("Random number generated is : " + S);


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


نستخدم كلمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] حتى يمكننا الاشارة مباشرة الى الطريقة دون انشاء كائن جديد من الفئة التى تحتويها على النحو التالى :

الكود:
 public static void main(String[] args) {
        
        prinNO();
            
    }


من الكود أعلاه تم الاشارة الى الطريقة فقط دون انشاء كائن جديد ....أما فى حالة عدم استخدامها سيكون شكل البرنامج كما يلى :
الكود:
public static void main(String[] args) {
        
      
    test t = new test();
    
     t.prinNO();
    }


هنا انشائنا كائن جديد من الفئة test ثم اشارنا الى الطريقة prinNO المراد تنفيذها


اتمنى ان تكون الفكرة وصلت ....وان لم تسيتطيع فهم اى جزئية اسأل من جديد

تحتاتى لك
من طرف أحمد مناع
في الأحد فبراير 03, 2019 2:49 pm
 
ابحث في: نقاش و أستفسارات الاعضاء
موضوع: حل اسئلة وتمارين بلغة جافا الجزء الثالث
المساهمات: 27
مشاهدة: 818

حل اسئلة وتمارين بلغة جافا الجزء الثالث

الاخت و الاستاذة الكريمة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] اشكرك والله على مجهودك و نشاطك بالمنتدى فاسمحى لى ان يتم وضعك فى رتبة العضو الشرفى بالمنتدى طالما انك ترفضي الانضمام للادارة.........الاخ الكريم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] اهلا بيك و معذرة فلم استطيع الدخول بالامس

السؤال الثالث : يطلب انشاء برنامج يقوم بتخصيص نقطة ثنائية الأبعاد مع إحداثيات x و y وحساب المسافة من هذه النقطة إلى نقطة أخرى عند الإحداثيات المعينة (x، y)

قبل ان نبدء برمجيا تعال نفهم السؤال رياضيا

يعتبر قانون البعد بين نقطتين أحد قوانين الرياضيات لاحتساب المسافة بين أيّ نقطتين على المستوى الديكارتي، ويُمكن حساب المسافة بين النقطة (س1, ص1) والنقطة (س2, ص2) من خلال الصيغة التالية: المسافة ^2 = (س2 – س1)2 + (ص2 – ص1)2، 

وبالتالي فإنّ المسافة تُساوي الجذر التربيعي ل((س2 – س1)2 + (ص2 – ص1))2


الوسم nextint على المنتدى منتدى مصر التقني Distance-between-points
الوسم nextint على المنتدى منتدى مصر التقني Java-program-distance-between-two-points
source


ويتم حسابها برمجيا باستخدام المعادلة التالية 

الكود:

dis=Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))





- إنشاء فئة باسم Point وانشاء طريقة بها لاحساب المسافة بين نقطتين على النحو التالى مع شرح كل سطر بالكود :

الكود:


 class Point {
    
   //الاعلان عن المتغيرات التى تمثل الاحداثيات س و ص  
   private int x , y;
  
  
   //مشيد الفئة  من إحداثياتها.
   public Point(int x, int y)
   {
     this.x = x;
     this.y = y;
   }

    
   // عند تحديدها يدويا(x,y)حساب المسافة من هذه النقطة إلى النقطة المحددة في
   public double distance(int x, int y) {
      int xDiff = this.x - x;
      int yDiff = this.y - y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
   // (another)حساب المسافة من هذه النقطة إلى النقطة المحددة في الكائن .
   public double distance(Point another) {
      int xDiff = this.x - another.x;
      int yDiff = this.y - another.y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
  
}
  



و لتنفيذة الفئة اعلاه فى الدالة الرئيسية على النحو التالى :


الكود:

public class Test {


    public static void main(String[] args) {

            Point p1 = new Point(1, 2); 

      System.out.printf("Distance is: %.2f%n", p1.distance(10, 11));

 
    }




 

المخرجات :
Distance is: 12.73


لكن السؤال لم يكتفى بذلك بل طلب فئة باسم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وإنشاء دائرتين و حساب المسافة بينهما....أذن سنحاول فعل ذلك 

_ حتى استطيع انشاء دائرة لابد من توافر المعلومات التالية :

1_مركز الدائرة على المستوي الاحداثى (x,y) لذلك سوف نستخدم الفئة اعلاه [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التى تقوم بتعين نقطة على المستوى الاحداثى (x ,y)

2_ نصف قطر الدائرة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لذلك سيتم الاعلان عنه كمتغير

و ذلك على النحو التالى :

_ إنشاء الفئة باسم Circle
الكود:

class Circle
{
   // تعريف متغيرين واحد لتمثيل مركز الدائرة و الاخر لنصف القطر
   private Point center;
   private int radius;

  
  
  //منشىء الفئة لانشاء دائرة مع نقطة مركزية معينة ونصف قطرها.
  Circle(Point center, int radius) {
   this.center = center;
   this.radius = radius;
}
 

// طريقة لحساب المسافة بين مزكر الدائرة مع مركز دائرة اخرى
public double distance(Circle another) {
   return center.distance(another.center);
}
}



و يتم استخدام الفئتين السابقتين على النحو التالى :
الكود:

public class Test {
 
    
    public static void main(String[] args) {
        // تعين مركز الدائرة الاولى بالقيم التى وردت فى السؤال
        Point p1 = new Point(2, 4);
       // تعين مركز الدائرة الثانية بالقيم بقيم افتراضية غير التى وردت فى السؤال حتى لا تتقاطع الدائرتين
        Point p2 = new Point(5, 7);
        
         // إنشاء الدائرة الاولى باستخدام نقطة المركز الاولى و نصف قطر  اثنين
        Circle c1 = new Circle(p1, 2);
       //إنشاء الدائرة الثانية باستخدام نقطة المركز الثانية و نصف قطر  اثنين
        Circle c2 = new Circle(p2, 2);
        
      //طباعة المسافة بين الدائرتين
       System.out.printf("The distance between the two circles is: %.2f%n", c1.distance(c2));
      
    }
    

    
}




و المثال بالكامل على النحو التالى :

الكود:

 class Point {
    
   //الاعلان عن المتغيرات التى تمثل الاحداثيات س و ص  
   private int x , y;
  
  
   //مشيد الفئة  من إحداثياتها.
   public Point(int x, int y)
   {
     this.x = x;
     this.y = y;
   }

    
   // عند تحديدها يدويا(x,y)حساب المسافة من هذه النقطة إلى النقطة المحددة في
   public double distance(int x, int y) {
      int xDiff = this.x - x;
      int yDiff = this.y - y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
   // (another)حساب المسافة من هذه النقطة إلى النقطة المحددة في الكائن .
   public double distance(Point another) {
      int xDiff = this.x - another.x;
      int yDiff = this.y - another.y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
  
}
  

class Circle
{
   // تعريف متغيرين واحد لتمثيل مركز الدائرة و الاخر لنصف القطر
   private Point center;
   private int radius;

  
  
  //منشىء الفئة لانشاء دائرة مع نقطة مركزية معينة ونصف قطرها.
  Circle(Point center, int radius) {
   this.center = center;
   this.radius = radius;
}
 

// طريقة لحساب المسافة بين مزكر الدائرة مع مركز دائرة اخرى
public double distance(Circle another) {
   return center.distance(another.center);
}
}

public class Test {
 
    
    public static void main(String[] args) {
        // تعين مركز الدائرة الاولى بالقيم التى وردت فى السؤال
        Point p1 = new Point(2, 4);
       // تعين مركز الدائرة الثانية بالقيم بقيم افتراضية غير التى وردت فى السؤال حتى لا تتقاطع الدائرتين
        Point p2 = new Point(5, 7);
        
         // إنشاء الدائرة الاولى باستخدام نقطة المركز الاولى و نصف قطر  اثنين
        Circle c1 = new Circle(p1, 2);
       //إنشاء الدائرة الثانية باستخدام نقطة المركز الثانية و نصف قطر  اثنين
        Circle c2 = new Circle(p2, 2);
        
      //طباعة المسافة بين الدائرتين
       System.out.printf("The distance between the two circles is: %.2f%n", c1.distance(c2));
      
    }
    

    
}




المخرجات :

The distance between the two circles is: 4.24



السؤال الرابع : يطلب انشاء عدد 2 طريقة لطباعة ارقام عشوائية ضمن نطاق الرقم n ثم ايجاد اكبر قيمة بينهما ...اذن سنفعل الاتى :

1_ طريقة باسم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لتوليد ارقام عشوائية فى نطاق الرقم n
2_طريقة اخرى باسم [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]  لتخزين الارقام العشوائية التى تم توليدها فى مصفوفة
3_ طباعة قيم المصفوفة
4_ ايجاد اكبر رقم فى المصفوفة

الحل :

توفر لغة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] العديد من الطرق لإنشاء أرقام عشوائية ضمن نطاق معين لذلك سوف نستخدم طريقة واحدة وهى باستخدام الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التابعة للفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] لتي يمكن أن تولد أرقام عشوائية بين 0 وحدود النطاق المحدد n ....وسيكون الرقم العشوائي الذي يتم إنشاؤه بين 0  وقيمة الحد الأعلى n.
حيث تأخذ هذه الطريقة عددًا صحيحًا كوسيطة. تمثل هذه القيمة الصحيحة الحد الأعلى للرقم العشوائي الذي سيتم إنشاؤه بواسطة هذه الطريقة.....و بالتالى لإنشاء رقم عشوائي بين 1 و 50 ، نقوم بإنشاء كائن من فئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]#.util#.Random واستدعاء طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الخاصة به مع تمرير الرقم 50 كوسيطة. سيؤدي هذا إلى إنشاء رقم بين 0 و 49 لذلك سنقوم بإضافة 1 إلى النتيجة مما سيجعل نطاق القيمة التي تم إنشاؤها من 1 إلى 50

تعال نترجم ذلك برمجيا

1_إنشاء طريقة لتوليد الارقام العشوائية فى نطاق الرقم n

الكود:
static int RandomNum1(int n) {
        
 Random rand = new Random();// انشاء كائن جديد
        int randomInt;// انشاء متغير لتخزين الرقم العشوائى
        randomInt = rand.nextInt(n) + 1;// استخدام الدالة nextint لتوليد رقم عشوانى فى نطاق الرقم n +1
        
        
     return randomInt;// ارجاع الارقام العشوائية
        
  }


2_إنشاء مصفوفة و تخزين الارقام العشوائية بها ....لم يحدد السؤال عدد الارقام العشوائية المطلوبة لذلك سنفترض انها 5 ارقام لذلك سوف ننشىء مصفوفة بحجم 5 ارقام
الكود:
static int[] Stornumbers(){
        
        int[] numbers = new int[5]; // تعين حجم المصفوفة
        for(int i = 0; i < numbers.length; i++) {// حلقة تكرارية للحصول على خمسة ارقام تم توليدها عشوائية
        numbers[i] = (int)(RandomNum1(50));// استخدام الطريقة RandomNum1 لتوليد الارقام العشوائية
    }
            // ارجاع قيمة المصفوفة
          return numbers;
    }


3_ استخدام و تنفيذ الطريقة Stornumbers فى الدالة الرئيسة

الكود:

    public static void main(String[] args) {
        
               int[] printNo = Stornumbers();//انشاء مصفوفة لطباعة محتويات الطريقة
               System.out.println("Random number generated is : " + Arrays.toString(printNo));
                
                 int max = Arrays.stream(printNo).max().getAsInt();// الحصول على اكبر قيمة فى المصوفة لطباعتها
                System.out.println("max number is : " + max);
                      
    }


و المثال بالكامل على النحو التالى :

الكود:

import java.util.Arrays;
import java.util.Random;

public class test {

    public static void main(String[] args) {
        
               int[] printNo = Stornumbers();//انشاء مصفوفة لطباعة محتويات الطريقة
               System.out.println("Random number generated is : " + Arrays.toString(printNo));
                
                 int max = Arrays.stream(printNo).max().getAsInt();// الحصول على اكبر قيمة فى المصوفة لطباعتها
                System.out.println("max number is : " + max);
                      
    }
    static int RandomNum1(int n) {
        
 Random rand = new Random();// انشاء كائن جديد
        int randomInt;// انشاء متغير لتخزين الرقم العشوائى
        randomInt = rand.nextInt(n) + 1;// استخدام الدالة nextint لتوليد رقم عشوانى فى نطاق الرقم n +1
        
        
     return randomInt;// ارجاع الارقام العشوائية
        
  }
    
     static int[] Stornumbers(){
        
        int[] numbers = new int[5]; // تعين حجم المصفوفة
        for(int i = 0; i < numbers.length; i++) {// حلقة تكرارية للحصول على خمسة ارقام تم توليدها عشوائية
        numbers[i] = (int)(RandomNum1(50));// استخدام الطريقة RandomNum1 لتوليد الارقام العشوائية
    }
    
     // ارجاع قيمة المصفوفة
          return numbers;
    }
    
}


المخرجات :
Random number generated is : [19, 37, 50, 26, 25]
max number is : 50
من طرف أحمد مناع
في الخميس يناير 31, 2019 6:15 am
 
ابحث في: نقاش و أستفسارات الاعضاء
موضوع: حل اسئلة وتمارين بلغة جافا الجزء الثالث
المساهمات: 27
مشاهدة: 818

الرجوع الى أعلى الصفحة

انتقل الى: