logo

FizzBuzz-Programm in Java

FizzBuzz ist ein Spiel, das bei Kindern beliebt ist. Durch das Spielen lernen Kinder die Teilung. Jetzt die FizzBuzz Spiel ist zu einer beliebten Programmierfrage geworden, die häufig gestellt wird Java-Programmierung Interviews. In diesem Abschnitt erfahren Sie, wie Sie eine erstellen FizzBuzz-Programm in Java .

Regeln des FizzBuzz-Spiels

Die Regeln des FizzBuzz-Spiels sind sehr einfach.

  • Sagen Fizz wenn die Zahl durch teilbar ist 3 .
  • Sagen Summen wenn die Zahl durch teilbar ist 5 .
  • Sagen FizzBuzz wenn die Zahl durch teilbar ist beide 3 und 5.
  • Gib die ... wieder Nummer selbst, wenn die Zahl ist nicht teilbar um 3 und 5.

Hinweis: Anstelle von 3 und 5 können Sie auch andere Teiler (z. B. 5 und 7 usw.) und Zeichenfolgen (Fizz und Buzz) verwenden.

Lassen Sie uns die oben genannten Regeln in einem Java-Programm implementieren.

Java FizzBuzz-Programm

Es gibt zwei Möglichkeiten, ein FizzBuzz-Programm in Java zu erstellen:

  • Verwendung der else-if-Anweisung
  • Verwendung von Java 8

Verwendung der else-if-Anweisung

Im folgenden Programm lesen wir eine Ganzzahl (n) vom Benutzer, die die Obergrenze zum Drucken von Fizz oder Buzz oder FizzBuzz darstellt. Die for-Schleife beginnt bei 1 und wird ausgeführt, bis die Bedingung i erreicht ist<=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>

Die Methode analysiert zwei Parameter:

    startInclusive:Es ist der Anfangswert.einschließlich:Die inklusive Obergrenze.

Verwendung der Methode „mapToObj()“.

Die Methode führt eine Zwischenoperation aus und gibt einen Stream mit Objektwert zurück, der aus den Ergebnissen der Anwendung der angegebenen Funktion auf die Elemente dieses Streams besteht.

Syntax:

 Stream mapToObj(IntFunction mapper) 

Die Methode analysiert einen Parameter Mapper (vom Elementtyp des neuen Streams). Es gibt den neuen Stream zurück.

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(); } } 

Ausgabe:

 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 

Beachten Sie, dass im obigen Programm die Logik für FizzBuzz mithilfe von in einer Zeile angepasst wird ternärer Operator . Es reduziert die Codezeile. Wir haben gedruckt Fizz Wenn die Zahl ein Vielfaches von 3 ist, wird gedruckt Summen Wenn die Zahl ein Vielfaches von 5 ist, wird gedruckt FizzBuzz Wenn die Zahl ein Vielfaches von 3 und 5 ist, wird andernfalls die gedruckt Nummer selbst.