logo

FizzBuzz-program i Java

FizzBuzz er et spil, der er populært blandt børn. Ved at spille dette lærer børn opdelingen. Nu, den FizzBuzz spil er blevet et populært programmeringsspørgsmål, der ofte bliver stillet i Java programmering interviews. I dette afsnit lærer vi, hvordan du opretter en FizzBuzz-program i Java .

Charat i streng

Regler for FizzBuzz-spillet

Reglerne for FizzBuzz-spillet er meget enkle.

  • Sige Fizz hvis tallet er deleligt med 3 .
  • Sige Summen hvis tallet er deleligt med 5 .
  • Sige FizzBuzz hvis tallet er deleligt med begge 3 og 5.
  • Returner nummer sig selv, hvis tallet er ikke deleligt med 3 og 5.

Bemærk: I stedet for 3 og 5 kan du også bruge forskellige divisorer (som 5 og 7 osv.) og streng (Fizz og Buzz).

Lad os implementere ovenstående regler i et Java-program.

Java FizzBuzz-program

Der er to måder at oprette FizzBuzz-program på i Java:

  • Brug af else-if-erklæring
  • Bruger Java 8

Brug af else-if-sætning

I det følgende program læser vi et heltal (n) fra brugeren, som er den øvre grænse for at udskrive Fizz eller Buzz eller FizzBuzz. For-løkken starter fra 1 og udføres indtil betingelsen 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>

Metoden analyserer to parametre:

    start inklusive:Det er startværdien.inklusive:Den inklusive øvre grænse.

Brug af mapToObj()-metoden

Metoden udfører en mellemoperation og returnerer en objekt-vurderet strøm, der består af resultaterne af at anvende den givne funktion på elementerne i denne strøm.

Syntaks:

 Stream mapToObj(IntFunction mapper) 

Metoden analyserer en parameter kortlægger (af elementtype af ny strøm). Det returnerer den nye stream.

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

Produktion:

 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 

Bemærk, at i ovenstående program er logikken for FizzBuzz justeret til én linje ved at bruge ternær operatør . Det reducerer kodelinjen. Vi har printet Fizz hvis tallet er multiplum af 3, udskrives Summen hvis tallet er multiplum af 5, udskrives FizzBuzz hvis tallet er multiplum af 3 og 5, ellers udskrives nummer sig selv.