FizzBuzz ir spēle, kas ir populāra bērnu vidū. Spēlējot šo, bērni apgūst iedalījumu. Tagad, FizzBuzz spēle ir kļuvusi par populāru programmēšanas jautājumu, kas tiek bieži uzdots Java programmēšana intervijas. Šajā sadaļā mēs uzzināsim, kā izveidot a FizzBuzz programma Java .
FizzBuzz spēles noteikumi
FizzBuzz spēles noteikumi ir ļoti vienkārši.
- Sakiet Fizz ja skaitlis dalās ar 3 .
- Sakiet Baumas ja skaitlis dalās ar 5 .
- Sakiet FizzBuzz ja skaitlis dalās ar gan 3 un 5.
- Atgrieziet numuru pati, ja numurs ir nav dalāms pa 3 un 5.
Piezīme: 3 un 5 vietā varat izmantot arī dažādus dalītājus (piemēram, 5 un 7 utt.) un virkni (Fizz un Buzz).
Ieviesīsim iepriekš minētos noteikumus Java programmā.
Java FizzBuzz programma
Ir divi veidi, kā Java programmā izveidot programmu FizzBuzz:
- Paziņojuma else-if izmantošana
- Izmantojot Java 8
Izteikuma else-if izmantošana
Nākamajā programmā mēs nolasām no lietotāja veselu skaitli (n), kas ir augšējā robeža, lai izdrukātu Fizz vai Buzz vai FizzBuzz. For cilpa sākas no 1 un tiek izpildīta līdz nosacījumam 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>
Metode analizē divus parametrus:
Izmantojot metodi mapToObj()
Metode veic starpposma darbību un atgriež objekta vērtības straumi, kas sastāv no šīs straumes elementiem dotās funkcijas piemērošanas rezultātiem.
Sintakse:
Stream mapToObj(IntFunction mapper)
Metode parsē parametru kartētājs (jaunās straumes elementa tipam). Tas atgriež jauno straumi.
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(); } }
Izvade:
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
Ņemiet vērā, ka iepriekš minētajā programmā FizzBuzz loģika tiek pielāgota vienā rindā, izmantojot trīskāršs operators . Tas samazina koda rindu. Esam izdrukājuši Fizz ja skaitlis ir reizināts ar 3, izdrukā Baumas ja skaitlis ir reizināts ar 5, izdrukā FizzBuzz ja skaitlis ir reizināts ar 3 un 5, pretējā gadījumā tiek drukāts numuru pati par sevi.
=n>=n>