logo

FizzBuzz-programma in Java

FizzBuzz is een spel dat populair is onder kinderen. Door dit te spelen leren kinderen de verdeling. Nu de FizzBuzz game is een populaire programmeervraag geworden die vaak wordt gesteld Java-programmering Sollicitatiegesprekken. In dit gedeelte leren we hoe u een FizzBuzz-programma in Java .

Regels van het FizzBuzz-spel

De regels van het FizzBuzz-spel zijn heel eenvoudig.

  • Inspraak Fizz als het getal deelbaar is door 3 .
  • Inspraak Ophef als het getal deelbaar is door 5 .
  • Inspraak FizzBuzz als het getal deelbaar is door beide 3 en 5.
  • Geef de ... Terug nummer zelf, als het nummer dat is niet deelbaar door 3 en 5.

Opmerking: in plaats van 3 en 5 kunt u ook andere delers (zoals 5 en 7, enz.) en tekenreeksen (Fizz en Buzz) gebruiken.

Laten we de bovenstaande regels implementeren in een Java-programma.

Java FizzBuzz-programma

Er zijn twee manieren om het FizzBuzz-programma in Java te maken:

robotcomponenten
  • Gebruik van else-if-instructie
  • Java8 gebruiken

Een else-if-statement gebruiken

In het volgende programma lezen we een geheel getal (n) van de gebruiker dat de bovengrens is voor het afdrukken van de Fizz, Buzz of FizzBuzz. De for-lus begint vanaf 1 en wordt uitgevoerd tot aan voorwaarde i<=n 3 5 becomes false. the else-if statement to check number is multiple of and or not.< p>

FizzBuzzVoorbeeld1.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>

De methode parseert twee parameters:

    startInclusief:Het is de initiële waarde.inbegrepen:De inclusieve bovengrens.

Met behulp van de mapToObj()-methode

De methode voert een tussenliggende bewerking uit en retourneert een objectwaardestroom die bestaat uit de resultaten van het toepassen van de gegeven functie op de elementen van deze stroom.

Syntaxis:

 Stream mapToObj(IntFunction mapper) 

De methode parseert een parameter kaartmaker (van elementtype van nieuwe stream). Het retourneert de nieuwe stream.

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

Uitgang:

dfs versus bfs
 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 

Merk op dat in het bovenstaande programma de logica voor FizzBuzz in één regel is aangepast met behulp van de ternaire operator . Het vermindert de coderegel. Wij hebben afgedrukt Fizz als het getal een veelvoud van 3 is, wordt afgedrukt Ophef als het getal een veelvoud van 5 is, wordt afgedrukt FizzBuzz als het getal een veelvoud is van 3 en 5, wordt anders het nummer zelf.