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

How to generate a random number in java?

مغلق
بدأه موظف في 14 مايو 2005 · 12 رد · 1,187 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أريد معرفة كيفية توليد الأرقام بشكل عشوائي بالجافا....تحديداً في مدى أكبر من [ صفر-واحد]...أريد مدى كبير....أرقام بمنزلة العشرات أو المئات ربما...

كيف أقوم بذلك بالجافا؟؟

وشكراً...

#2

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

int	a= (int) (100 * Math.random());

غير رقم 100 على هواك

و بالتوفيق.

11_03_06_12_48_57_1142110137Image(_66).jpg

#3

- a l t -...شكراً جزيلاً لك...وبارك الله فيك...:)

لكن لي طلب آخر أرجو أن لا أثقل عليك أو على الأخوة الآخرين...

أريد أن أقرأ حرف من الكيبورد بالجافا...لكن لا أعرف بالضبط كيف...الحقيقة أني لم أدرس الجافا بعد...لكن أحاول الإلمام بها وإن على عجل...

عملت كود بال c++...به المقطع التالي:

char read;

do{

your statements...

cout<<"do you want to continue?...(y/n)";cin>>read;

}while(read!='n');

المشكلة أني لا أعرف كيف أقوم بالقراءة...تحديداً ما هو أمر الجافا المقابل لل cin في ال c++??

شكرا للجميع...:)

#4

إذا كنت تريد قراءة حرف واحد فقط من الكيبورد فاستخدم الامر التالي

public static void main (String [] args ) throws java.io.IOException
	{
int f=System.in.read();
System.out.println((char) f );

و بالنسبة للغة C++ ما اعرف عنها شي ( أعذرني )..

هذا و الله اعلم

و اذا عند الاخوان شي ما راح يقصرون . .

11_03_06_12_48_57_1142110137Image(_66).jpg

#5

السلام عليكم

لقراءة عدد

import java.io.*;

تكتب الكود التالي:

DataInputStream kb = new DataInputStream(System.in);

String line = kb.readLine().trim(); // read a line of string and eliminate spaces at begin and end

int n = Integer.parseInt(line); // convert string to int

long l = Long.parseLong(line); // convert string to long

float l = Float.parseFloat(line); // convert string to float

double d = Double.parseDouble(line); // convert string to double

if the string contains unvalid characters so NumberFormatException will be throwen
#6

الإخوة الكرام...- a l t - و kkhalil2005 أشكر لكم معونتكم....:)

لكن للأسف لم أستطع حل المشكلة حتى الآن...

هذا هو الكود الذي أعمل عليه...أضعه حتى تكون صورة المشكلة واضحة لكم تماماً...

public class ReadFromKeyboard{
	public static void main(String args[])throws
	java.io.IOException{
  System.out.println("How to read a signle character from the keyboard?!");

  int ch;

  do{
  	
  	
  	//////////////////////////////
  	//      	//
  	//    Here is your task     //
  	//      	//
  	//////////////////////////////
  	
  	System.out.println("\ndo you want to continue?(y/n):");
  	ch=System.in.read();
  	System.out.println((char) ch );

  }while(ch != 'n');
	}
}

عند تشغيل هذا الكود...لا تعمل حلقة ال do...while بالشكل المفترض...خاصة عند إدخال حرف y من الكيبورد...فهذا الذي أريده...كيف أقوم بقراءة حرف في كل مرة بشكل طبيعي.

شكراً لكم...:)

تم تعديل هذه المشاركة بواسطة موظف في 16 مايو 2005 في 18:43

#7

السلام عليكم

عند قراءة رمز واحد نقوم فعليا بإدخال رمز ثم نضعط على الكبسة انتر ويتم تخزين الرمز وقيم الكبسة انتر في مخزن لوحة المفاتيح لذلك عندما يقرأ البرنامج من مخزن buffer لوحة المفاتيح يأخذ بالبداية الرمز وتبقى قيمة انتر في المخزن فعند الدوران مرة اخرى في التكرار فلا يتوقف البرنامج حتى ندخل قيمة جديدة بل يكون قد قرأ القيمة الزائدة المخزنة في المخزن وتبابع التنفيذ دون توقف وعندما يصبح المخزن فارغ بعد قراءتين اضافيتين يتوقف البرنامج لإدخال قيم جديدة من لوحة المفاتيح

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

  ch=System.in.read();
  System.in.skip(2);// add this line
  System.out.println((char) ch );
#8

فعلا يا أخي الناتج مضحك جدا!!!

هاهاها......

بصراحة أنت عبقري!!!

وددت لو وضعت هذا السؤال في موضوع مستقل، فهو لا يتناسب مع عنوان الموضوع الحالي!

لو كان سؤالك التالي مختلف عن موضوع (الرقم العشوائي) فنرجو منك أخي الكريم أن تنشئ موضوع جديد بعنوان يناسب سؤالك الجديد!

------------------

لإجابة سؤالك:

لا تدخل الحرف "y" بل أدخل الكلمة yes. ستجد أنه سيطبع لك التالي:

y

e

s

(حرف إدخال لا يرى) يرمز له \10

(حرف سطر جديد لا يرى) يرمز له بـ \13

------------------انتهى......

إذا أردت أن تعرف الأرقام اطبع ch ولا تطبع

 (char)ch

استخدم BufferedReader للقراءة من لوحة المفاتيح.

BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
String sentence = input.readLine();
#9

اضافه لما قدمه الاعضاء

هذا الحلقه تمكنك حل عملية التكرار الزائده

do {
    System.out.println("\ndo you want to continue?(y/n):");
    
    do {
      ch = (char) System.in.read();
   	 }while (ch=='\n' | ch=='\r');
   
  
    }	while(ch != 'n');

11_03_06_12_48_57_1142110137Image(_66).jpg

#10

("ألت") ألن تقرأ هذه أكثر من حرف؟! حاول إدخال كلمة بدلا من حرف ستجد أنه سيقرأها كلها حرفا بعد حرف!!

أعتقد أنك تستطيع حل المشكلة جذريا هكذا:

do{
ch=(char) System.in.read();
System.in.skip(System.in.available());
}while(ch!='n');

لم أجرب هذه الحركة!

#11

الإخوة الكرام...

أبومازن....- a l t -....kkhalil2005....

شكراً لكم جميعاً على تفاعلكم الطيب...وعلى الحلول التي قدمتوها...:)

حقيقة كنت قد عثرت على طريقة بالأمس كانت تحوي حل لما أريد...الأمر لا يبتعد كثيراً على تفضلتم به...لكن أحب المشاركة به حتى تزداد الحلول...:

import java.io.*;
public class ReadFromKeyboard{
	public static void main(String args[])
	throws java.io.IOException{
  System.out.println("How to read a signle character from the keyboard?!");



 	 String ch;

 	 while(true)
 	 {

    InputStreamReader unbuffered = new InputStreamReader( System.in    );
     	 BufferedReader keyboard = new BufferedReader( unbuffered );
     	 System.out.println("Do you want to continue? (y/n)");
     	 int input = keyboard.read();
     	 char c = (char) input;
          if ( c != 'y' )
         	 break;
  }
  System.out.println("end\n\n\n");
  System.exit(0);  // for
	}
}

وشكراً جزيلاً للجميع...:)

#12

أخي الموظف... هذا نفس برنامجك الأول!! أقصد بهذا أنه يحمل نفس المشكلة. لكنك فقط أخفيت المشكلة، فأنت لم تطبع داخل جملة التكرار do.

أضف هذا السطر وسترى ما أعنيه:

أضف بعد break جملة System.out.println(ch);

الحلول السابقة أفضل!!

وإذا أردت إصلاح برنامجك الأول بنفس طريقتك الجديدة، فكل ماعليك هو أن تمسح جملة الطباعة التي في وسط جملة التكرار!

أضف إلى ذلك أنك أضفت مكونات جديدة في جملة التكرار، ولم تستعمل إمكانياتها!!! فأنت استعملت جملة keyboard.read وهي نفس جملتك السابقة تماما!!

الأفضل أن تستخدم keyboard.readLine

بالتوفيق!!

#13

"أبو مازن"....

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

شكراً لك ملاحظاتك...:)

هذا الموضوع مغلق.

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