FizzBuzz je igra koja je popularna među djecom. Igrajući ovo, djeca uče podjelu. Sada, FizzBuzz igra je postala popularno programersko pitanje koje se često postavlja u Java programiranje intervjui. U ovom odjeljku naučit ćemo kako stvoriti a FizzBuzz program u Javi .
Pravila igre FizzBuzz
Pravila igre FizzBuzz vrlo su jednostavna.
- Reći Fiz ako je broj djeljiv sa 3 .
- Reći Zujati ako je broj djeljiv sa 5 .
- Reći FizzBuzz ako je broj djeljiv sa oba 3 i 5.
- Vratite broj sama, ako je broj nije djeljiv za 3 i 5.
Napomena: Umjesto 3 i 5, možete također koristiti različite djelitelje (kao što su 5 i 7, itd.) i niz (Fizz i Buzz).
Implementirajmo gornja pravila u Java program.
Program Java FizzBuzz
Postoje dva načina za kreiranje FizzBuzz programa u Javi:
- Korištenje else-if iskaza
- Korištenje Jave 8
Korištenje else-if izjave
U sljedećem programu čitamo cijeli broj (n) od korisnika koji je gornja granica za ispis Fizza ili Buzza ili FizzBuzza. For petlja počinje od 1 i izvršava se dok se ne ispuni uvjet 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('Enter the number: '); //reads an integer from the user int n = sc.nextInt(); System.out.println('The Fizz, Buzz, and FizzBuzz numbers are: '); //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('Enter the number:'); //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->i%3==0?(i%5==0? 'FizzBuzz ':'Fizz '):(i%5==0? 'Buzz ': i+' ')).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>
Metoda analizira dva parametra:
Korištenje metode mapToObj().
Metoda izvodi međuoperaciju i vraća Stream s objektnom vrijednošću koji se sastoji od rezultata primjene zadane funkcije na elemente ovog toka.
Sintaksa:
Stream mapToObj(IntFunction mapper)
Metoda analizira parametar kartograf (tipa elementa novog toka). Vraća novi tok.
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('Enter the number:'); //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->i%3==0?(i%5==0? 'FizzBuzz ':'Fizz '):(i%5==0? 'Buzz ': i+' ')).forEach(System.out::print); //close the Scanner sc.close(); } }
Izlaz:
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
Imajte na umu da je u gornjem programu logika za FizzBuzz podešena u jedan red pomoću ternarni operator . Smanjuje liniju koda. Ispisali smo Fiz ako je broj višekratnik 3, ispisuje Zujati ako je broj višekratnik 5, ispisuje FizzBuzz ako je broj višekratnik 3 i 5, inače ispisuje broj sebe.
=n>=n>