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

كيفية جعل ال comiler ينتظر وقت محدد ؟؟

بدأه NarutoMan في 12 ديسمبر 2010 · 8 رد · 678 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

1 - اريد ان اظهر نص فى ال consol لمدة 10 ثوانى ثم اخفاء النص بعد انهاء الوقت

كيف افعل هذا علما بان

\r

لا تعمل فى الجافا ؟؟؟

2 - اريد ان المستخدم يدخل رقم مثلا فى خلال 5 ثوانى

ولكن اذا ادخل الرقم بعد الوقت المحدد تطلع رسال تقول Sorry time is out

كيف افعل هذا مستخدما ال consol لادخال الرقم ؟؟؟

مثلا اريد استخدام هذا فى لعبة لتقوية الزاكرة

والسلام ختام

#2
NarutoMan كتب:

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

1 - اريد ان اظهر نص فى ال consol لمدة 10 ثوانى ثم اخفاء النص بعد انهاء الوقت

كيف افعل هذا علما بان

\r

لا تعمل فى الجافا ؟؟؟

2 - اريد ان المستخدم يدخل رقم مثلا فى خلال 5 ثوانى

ولكن اذا ادخل الرقم بعد الوقت المحدد تطلع رسال تقول Sorry time is out

كيف افعل هذا مستخدما ال consol لادخال الرقم ؟؟؟

مثلا اريد استخدام هذا فى لعبة لتقوية الزاكرة

والسلام ختام

اعتقد انها فى الـconsole مش هتنفع

انما مممكن تعملها بالـJOptionPane

Software Developer
Mahmoudkelany.com


 

#3

بالنسبة لمسح الشاشه في الـConsole فوالله ماعندي فكره لكن بالنسبه لأخذ قيمه من المستخدم خلال خمس ثواني فقط فهنا أستعمل Thread

    	Thread mainThread = new Thread(new Runnable(){
      	public void run(){
           	Thread numGenerator;
           	Runnable numGenRunnable = new Runnable(){
              	public void run(){
                	//Obtain a value from user
              	}
           	};

        	try{
            	while (true){
               	numGenerator = new Thread(numGenRunnable);
               	numGenerator.start();
               	Thread.sleep(5000);
               	numGenerator.stop();
               	numGenerator = null;
            	}

        	}
        	catch(Exception ex){

        	}


      	}
  	});
  	mainThread.start();

جرب وقول لي ايش النتيجه

1


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#4
Mahmoud Kelany كتب:

اعتقد انها فى الـconsole مش هتنفع

انما مممكن تعملها بالـJOptionPane

اممم انا كنت فاكرها زى ال C++

طيب شكرا

M.Allaw كتب:

بالنسبة لمسح الشاشه في الـConsole فوالله ماعندي فكره لكن بالنسبه لأخذ قيمه من المستخدم خلال خمس ثواني فقط فهنا أستعمل Thread

    	Thread mainThread = new Thread(new Runnable(){
      	public void run(){
   			Thread numGenerator;
   			Runnable numGenRunnable = new Runnable(){
              	public void run(){
                	//Obtain a value from user
              	}
   			};

        	try{
            	while (true){
   				numGenerator = new Thread(numGenRunnable);
   				numGenerator.start();
   				Thread.sleep(5000);
   				numGenerator.stop();
   				numGenerator = null;
            	}

        	}
        	catch(Exception ex){

        	}


      	}
  	});
  	mainThread.start();

جرب وقول لي ايش النتيجه

شكرا

بس انا مش عارف حاجة اصلا عن ال threads

انا لسه فى اول الجافا

بس ان شاء الله هاحاول افهم ال threads

واشوف هذا الحل

وبعدين هو ال

\r and \b

ليه مش شغالين فى الجافا ؟؟

تم تعديل هذه المشاركة بواسطة NarutoMan في 12 ديسمبر 2010 في 21:11

#5
NarutoMan كتب:

وبعدين هو ال

\r and \b

ليه مش شغالين فى الجافا ؟؟

هما حرين يا اخى tongue.giftongue.giftongue.gif

Software Developer
Mahmoudkelany.com


 

#6

انظر الى البرنامج

import java.util.Scanner;
public class Nano
{
	public static void main(String [] args)
	{
		Scanner console = new Scanner(System.in);

		System.out.println("please enter *******");
		double start= System.nanoTime();
		 int cont=console.nextInt();
		 double end=System.nanoTime();
		 	double i=(end-start)/1000000000;
		 	if(i>=1)
		 	{
		 		System.out.println("error"+i);
		 	}	
	}
}

تم تعديل هذه المشاركة بواسطة pro.fahd في 13 ديسمبر 2010 في 05:21

1
albert_einstein.jpg

Untitled-AE.jpg
#7
Mahmoud Kelany كتب:

اعتقد انها فى الـconsole مش هتنفع

انما مممكن تعملها بالـJOptionPane

يا محمود من قال انها لن تنفع

جافا مثل c/c++ تماما تذكر كيف كنت تستخدمها فى لغة سى مثلا

printf("%s\b\b\b","myName");

فى الجافا انت تحاول ان تستخدمها داخل الدالة

System.out.println();

والتى تقوم بطباعة المرسلات والنزول الى سطر جديد والتغاضى عن التنسيق المكتوب

ولاستخدام \b و \r

كما تقول استخدم

System.out.printf();

import java.util.Scanner;

public class Master{

	private static Scanner sc = new Scanner(System.in);
	static int number = 0;
	public static void main(String[] args){


    	System.out.printf("%s\n%s\b\b\b\b","Enter five integer values : ","____");
    	number =sc.nextInt();

    	System.out.println("You entered number " + number);

	}
}

لاحظ انك عند ادخالك للارقام تقوم بالكتابة على النص المطبوع مسبقا "_____"

يمكنك استخدام هذه الطريقة فى برنامجك والكتابة على مدخلات المستخدم

تحياتى

تم تعديل هذه المشاركة بواسطة Oracle_Java في 13 ديسمبر 2010 في 12:20

2


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#8
Mahmoud Kelany كتب:

هما حرين يا اخى tongue.giftongue.giftongue.gif

لا مش حرين م انا محتاس مش عارف اعمل البرنامج دة بسببهم

pro.fahd كتب:

انظر الى البرنامج

import java.util.Scanner;
public class Nano
{
	public static void main(String [] args)
	{
		Scanner console = new Scanner(System.in);

		System.out.println("please enter *******");
		double start= System.nanoTime();
 		int cont=console.nextInt();
 		double end=System.nanoTime();
 			double i=(end-start)/1000000000;
 			if(i>=1)
 			{
 				System.out.println("error"+i);
 			}	
	}
}

فعلا فى البرنامج دة لازم ادخل اى رقم قبل فوات ثانية من بدء تشغيل البرنامج

هذا هو الذى كنت بحاجة اليه

شكرا على البرنامج

لكن لماذا استخدمت

System.nanoTime()

كان من الاسهل استخدام

System.currentTimeMillis()

خصوصا فى الحسابات

Oracle_Java كتب:

يا محمود من قال انها لن تنفع

جافا مثل c/c++ تماما تذكر كيف كنت تستخدمها فى لغة سى مثلا

printf("%s\b\b\b","myName");

فى الجافا انت تحاول ان تستخدمها داخل الدالة

System.out.println();

والتى تقوم بطباعة المرسلات والنزول الى سطر جديد والتغاضى عن التنسيق المكتوب

ولاستخدام \b و \r

كما تقول استخدم

System.out.printf();

import java.util.Scanner;

public class Master{

	private static Scanner sc = new Scanner(System.in);
	static int number = 0;
	public static void main(String[] args){


    	System.out.printf("%s\n%s\b\b\b\b","Enter five integer values : ","____");
    	number =sc.nextInt();

    	System.out.println("You entered number " + number);

	}
}

لاحظ انك عند ادخالك للارقام تقوم بالكتابة على النص المطبوع مسبقا "_____"

يمكنك استخدام هذه الطريقة فى برنامجك والكتابة على مدخلات المستخدم

تحياتى

شكرا لك هذه الطريقة تعمل بشكل ناجح لكن مع ال consol الخاص بنظام التشغيل فقط وليس مع ال consol الخاص بال IDE

لانى استخدم netbeans لكن

\r and \b

لا يعملان معه لذلك يجب ان يكون البرنامج ملف دون التعامل مع ال IDE

ويبدو ان

\r and \b

لا يعملان الا مع

System.out.printf();

فقط

الا توجد طريقة لكتابة نص فى ال consol ثم بعد 10 ثوانى يتم مسحه تلقائى لان طريقة الاخ pro.fahd و الاخ M.Allaw لا تعمل الا مع المدخلات فقط ؟؟

تم تعديل هذه المشاركة بواسطة NarutoMan في 13 ديسمبر 2010 في 22:57

#9
NarutoMan كتب:

الا توجد طريقة لكتابة نص فى ال consol ثم بعد 10 ثوانى يتم مسحه تلقائى لان طريقة الاخ pro.fahd و الاخ M.Allaw لا تعمل الا مع المدخلات فقط ؟؟

ما دمت فى نفس السطر ولم تنزل الى سطر جديد بامكانك المسح كما فى المثال

import java.util.Scanner;

public class Master{

	private static Scanner sc = new Scanner(System.in);

	public static void main(String[] args){
    	try{

        	System.out.print("My Name");
        	Thread.sleep(1000);
        	System.out.printf("\r%s\n","   	");
    	}catch(Exception ex){
        	ex.printStackTrace();
    	}
	}
}

طبعا الرقم 1000 يمثل ثانية واحدة

ولعشر ثوانى اكتب 10000

بالتوفيق

تم تعديل هذه المشاركة بواسطة Oracle_Java في 14 ديسمبر 2010 في 13:37


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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