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

عمل برنامج فاكتوريل بطريقة مختلفة

بدأه mr.beshoy في 15 نوفمبر 2008 · 8 رد · 1,183 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام للجميع

سبق قبل كده و كان ليا سوال فى برنامج فاكتوريل

بس المرة دى انا الى بجعل اليوزر هو الى يدخل الرقم الى عاوزه

كنت قبل كده انا ببقى مدخله جهاز فى الكود

و ادى الكود بتاعى

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Factorial {

	public static void main(String[] args) {
		try {
			System.out.print("Enter number:");
			int num = System.in.read();
			factorial(num);

		} catch (IOException ex) {
			Logger.getLogger(Factorial.class.getName()).log(Level.SEVERE, null, ex);
		}
	}
	private static void factorial(int num) {
		 int fact=0;
		while(num<0){
			fact=1;
			fact*=num;
		}
		System.out.println("The factorial is" + fact);
	}
}

المشكلة انى لما ادخل قيمة زى 5 مثلا يروح يدينى الفكتوريل 0

ليش و هو قيمته فى الميثود بتتغير

فالمفروض يطبع القيمة الجديدة

؟؟؟

معلش انا لقيت الكود مش كظبط المرة الاولى فعدته تانى

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Factorial {

	public static void main(String[] args) {
		try {
			System.out.print("Enter number:");
			int num = System.in.read();
			factorial(num);

		} catch (IOException ex) {
			Logger.getLogger(Factorial.class.getName()).log(Level.SEVERE, null, ex);
		}
	}
	private static void factorial(int num) {
		 int fact=0;
		while(num<0){
			fact=1;
			fact*=num;
		}
		System.out.println("The factorial is" + fact);
	}
}

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 15 نوفمبر 2008 في 15:35 — السبب: إضافة وسم code

#2

تاكد من عمل الداله ،،،

في كودك لايوجد اي شئ يدل على ان العدد يتغير الى ان يصل الى الحد المثالي اقصد تغيير الرقم تناقصيا او تزايديا

في كل مساله برمجيه تواجهك دائما هناك علامات نهايه او خطوط عريضه لابد ان تتاكد ان كودك سيصل اليها في مرحله معينه وقت التنفيذ ..

#3

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

المشكل ان الكود الذي وضعثه ليس صحيح بحيث ان الجملة while تستمر في الدوران دون توقف اذا كان (num > 0) لذلك النتيجة دائما 0

عليك تغيير الكود بهذه الطريقة :

  1.  
  2. import java.io.IOException;
  3. import java.util.logging.Level;
  4. import java.util.logging.Logger;
  5.  
  6. public class Factorial {
  7.  
  8. public static void main(String[] args) {
  9. try {
  10. System.out.print("Enter number:");
  11. int num = System.in.read();
  12. factorial(num);
  13.  
  14. } catch (IOException ex) {
  15. Logger.getLogger(Factorial.class.getName()).log(Level.SEVERE, null, ex);
  16. }
  17. }
  18. private static void factorial(int num) {
  19. int fact=1;
  20. while(num>0){
  21. fact*=num;
  22. num--;
  23. }
  24. System.out.println("The factorial is" + fact);
  25. }
  26.  

1231073054.gif
#4

الكود مفهشو جديد

و لما بتدخل 5 بردو بيطلع 0

#5

هناك خطأ في تنفيذ دالة الفكتوريال

هذة دالة صحيحة جربها

private static long factorial(int num) {
	if (num < 0 ) return 0;
	if (num ==  0) return 1;
	long fact=1;
			while(num > 1){
		fact *= num;
		num --;
			}
	return fact;
}
#6

مش نافعة

كل ما ادخل رقم يطلعلى الfact بتاعه 0

ايه المشكلة انا اتحيرت

#7

الدوال التي وضعها لك الأخوان صحيحه ، لكن المشكله في طريقه الأدخال ، جرب :

import java.io.IOException;
import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
			System.out.print("Enter number:");
			Scanner input = new Scanner(System.in);
			int num = input.nextInt();
			factorial(num);
	}
	private static void factorial(int num) {
		 System.out.println(num);
		 int  fact=1; 
		while(num>0){
			fact*=num;
			num--;
		}
		System.out.println("The factorial is : " + fact);
	}
}

وسوف يعمل :) ..

بالتوفيق ..

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#8

سلام

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

Scanner input = new Scanner(System.in);
			int num = input.nextInt();

بس عاوز اعرف nextInt()

بتعمل ايه بالظبط

وشكرا على تعبكم جميعاً

#9

طريقتك الأولى كانت خاطئه لأن System.in.read هذه بدائيه للغايه :) Byte Streem .. لذلك يجب أن تحولها الى Char Stream على ما أذكر باستخدام InputStreamReader ،، أو أستخدام Scanner مباشره وهو يفى بالغرض..

والداله nextInt تقرأ Int من لوحه المفاتيح ، وهناك دوال أخر على نفس الشاكله nextChar و nextLine و nextDouble ، راجع الDocumentations للمزيد من الدوال ..

بالتوفيق :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

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