logo

برنامج FizzBuzz في جافا

فيزباز هي لعبة تحظى بشعبية كبيرة بين الأطفال. من خلال اللعب بهذه اللعبة، يتعلم الأطفال القسمة. الآن، فيزباز أصبحت اللعبة سؤال برمجة شائع يتم طرحه بشكل متكرر برمجة جافا المقابلات. في هذا القسم سوف نتعلم كيفية إنشاء برنامج FizzBuzz في جافا .

قواعد لعبة FizzBuzz

قواعد لعبة FizzBuzz بسيطة جدًا.

  • يقول أز إذا كان الرقم يقبل القسمة على 3 .
  • يقول شرب حتى الثمالة إذا كان الرقم يقبل القسمة على 5 .
  • يقول فيزباز إذا كان الرقم يقبل القسمة على كلاهما 3 و 5.
  • إرجاع رقم نفسه، إذا كان الرقم غير قابل للقسمة بحلول 3 و 5.

ملاحظة: بدلاً من 3 و5، يمكنك استخدام مقسومات مختلفة (مثل 5 و7 وما إلى ذلك) وسلسلة (Fizz وBuzz) أيضًا.

دعونا ننفذ القواعد المذكورة أعلاه في برنامج جافا.

برنامج جافا FizzBuzz

هناك طريقتان لإنشاء برنامج FizzBuzz في Java:

  • استخدام عبارة else-if
  • باستخدام جافا 8

باستخدام عبارة else-if

في البرنامج التالي نقرأ عددا صحيحا (n) من المستخدم وهو الحد الأعلى لطباعة Fizz أو Buzz أو FizzBuzz. تبدأ حلقة for من 1 وتنفذ حتى الشرط i<=n 3 5 becomes false. the else-if statement to check number is multiple of and or not.< p>

FizzBuzzExample1.java

 import java.util.Scanner; public class FizzBuzzExample1 { public static void main(String args[]) { //constructor of the scanner class Scanner sc = new Scanner(System.in); System.out.print(&apos;Enter the number: &apos;); //reads an integer from the user int n = sc.nextInt(); System.out.println(&apos;The Fizz, Buzz, and FizzBuzz numbers are: &apos;); //for loop executes until the condition i<=n 3 5 becomes false for (int i="1;" <="n;" i++) { returns true if both the conditions return (i%3="=0" && i%5="=0)" prints number is multiple of and system.out.print('fizzbuzz'); } executes condition else system.out.print('fizz'); (i%5="=0)" system.out.print('buzz'); itself not divisible by system.out.print(i); space system.out.print(','+' '); close scanner sc.close(); pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/88/fizzbuzz-program-java.webp" alt="FizzBuzz Program in Java"> <h3>Using Java 8</h3> <p>Java 8 provides the <strong>IntStream</strong> interface. We have used the following two methods of the IntStream interface.</p> <p> <strong>rangeClosed() Method:</strong> It is the static method of the IntStream interface. It returns a sequential IntStream for the specified range.</p> <p> <strong>Syntax:</strong> </p> <pre> static IntStream rangeClosed(int startInclusive, int endInclusive) </pre> <p>The method parses two parameters:</p> <ul> <tr><td>startInclusive:</td> It is the initial value. </tr><tr><td>endInclusive:</td> The inclusive upper bound. </tr></ul> <h3>Using mapToObj() Method</h3> <p>The method performs an intermediate operation and returns an object-valued Stream consisting of the results of applying the given function to the elements of this stream.</p> <p> <strong>Syntax:</strong> </p> <pre> Stream mapToObj(IntFunction mapper) </pre> <p>The method parses a parameter <strong>mapper</strong> (of element type of new stream). It returns the new stream.</p> <p> <strong>FizzBuzzExample2.java</strong> </p> <pre> import java.util.*; import java.util.stream.IntStream; public class FizzBuzzExample2 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.print(&apos;Enter the number:&apos;); //reads an integer from the user int num = sc.nextInt(); //the rangeClosed() method returns a sequential IntStream for the specified range of int elements //for-each iterate over the Stream and prints the elements IntStream.rangeClosed(1, num).mapToObj(i-&gt;i%3==0?(i%5==0? &apos;FizzBuzz &apos;:&apos;Fizz &apos;):(i%5==0? &apos;Buzz &apos;: i+&apos; &apos;)).forEach(System.out::print); //close the Scanner sc.close(); } } </pre> <p> <strong>Output:</strong> </p> <pre> Enter the number: 40 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz </pre> <p>Note that, in the above program the logic for FizzBuzz is adjusted into one line by using the <a href="/ternary-operator-java">ternary operator</a> . It reduces the line of code. We have printed <strong>Fizz</strong> if the number is multiple of 3, prints <strong>Buzz</strong> if the number is multiple of 5, prints <strong>FizzBuzz</strong> if the number is multiple of 3 and 5, else prints the <strong>number</strong> itself.</p> <hr></=n>

تقوم الطريقة بتوزيع معلمتين:

    البداية شاملة:إنها القيمة الأولية.مشتمل:الحد الأعلى الشامل.

باستخدام طريقة MapToObj ().

تقوم الطريقة بتنفيذ عملية وسيطة وإرجاع دفق ذي قيمة كائن يتكون من نتائج تطبيق الوظيفة المحددة على عناصر هذا الدفق.

بناء الجملة:

 Stream mapToObj(IntFunction mapper) 

تقوم الطريقة بتوزيع المعلمة مصمم الخرائط (من نوع العنصر للتيار الجديد). يقوم بإرجاع الدفق الجديد.

FizzBuzzExample2.java

 import java.util.*; import java.util.stream.IntStream; public class FizzBuzzExample2 { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.print(&apos;Enter the number:&apos;); //reads an integer from the user int num = sc.nextInt(); //the rangeClosed() method returns a sequential IntStream for the specified range of int elements //for-each iterate over the Stream and prints the elements IntStream.rangeClosed(1, num).mapToObj(i-&gt;i%3==0?(i%5==0? &apos;FizzBuzz &apos;:&apos;Fizz &apos;):(i%5==0? &apos;Buzz &apos;: i+&apos; &apos;)).forEach(System.out::print); //close the Scanner sc.close(); } } 

انتاج:

 Enter the number: 40 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 

لاحظ أنه في البرنامج أعلاه تم ضبط منطق FizzBuzz في سطر واحد باستخدام الأمر عامل ثلاثي . فهو يقلل من سطر التعليمات البرمجية. لقد طبعنا أز إذا كان الرقم مضاعفًا للرقم 3، فسيتم الطباعة شرب حتى الثمالة إذا كان الرقم مضاعفًا للرقم 5، فسيتم الطباعة فيزباز إذا كان الرقم مضاعفًا لـ 3 و5، فسيتم طباعة الرقم رقم بحد ذاتها.