logo

Java의 FizzBuzz 프로그램

피즈버즈 아이들에게 인기가 많은 게임입니다. 이것을 플레이함으로써 아이들은 나눗셈을 배웁니다. 이제, 피즈버즈 게임은 자주 묻는 인기 있는 프로그래밍 질문이 되었습니다. 자바 프로그래밍 인터뷰. 이번 섹션에서는 Java의 FizzBuzz 프로그램 .

FizzBuzz 게임의 규칙

FizzBuzz 게임의 규칙은 매우 간단합니다.

  • 말하다 활기 숫자를 다음으로 나눌 수 있는 경우 .
  • 말하다 버저 소리 숫자를 다음으로 나눌 수 있는 경우 5 .
  • 말하다 피즈버즈 숫자를 다음으로 나눌 수 있는 경우 둘 다 3과 5.
  • 반환 숫자 그 자체, 숫자가 다음과 같은 경우 나눌 수 없음 3시와 5시.

참고: 3과 5 대신에 다른 약수(예: 5와 7 등)와 문자열(Fizz 및 Buzz)을 사용할 수도 있습니다.

위의 규칙을 Java 프로그램에서 구현해 보겠습니다.

자바 FizzBuzz 프로그램

Java로 FizzBuzz 프로그램을 만드는 방법에는 두 가지가 있습니다.

마크 저커버그 교육
  • else-if 문 사용
  • 자바 8 사용

else-if 문 사용

다음 프로그램에서는 Fizz 또는 Buzz 또는 FizzBuzz를 인쇄하기 위한 상한값인 정수(n)를 사용자로부터 읽어옵니다. for 루프는 1부터 시작하여 조건 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>

이 메서드는 두 가지 매개변수를 구문 분석합니다.

    시작포함:초기값입니다.포함:포함된 상한입니다.

mapToObj() 메소드 사용

이 메서드는 중간 작업을 수행하고 이 스트림의 요소에 지정된 함수를 적용한 결과로 구성된 개체 값 스트림을 반환합니다.

자바를 잡아보세요

통사론:

 Stream mapToObj(IntFunction mapper) 

이 메서드는 매개변수를 구문 분석합니다. 매퍼 (새 스트림의 요소 유형). 새로운 스트림을 반환합니다.

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

산출:

 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 

위 프로그램에서 FizzBuzz의 로직은 다음을 사용하여 한 줄로 조정되었습니다. 삼항 연산자 . 코드 줄이 줄어듭니다. 우리는 인쇄했습니다 활기 숫자가 3의 배수이면 인쇄됩니다. 버저 소리 숫자가 5의 배수이면 인쇄됩니다. 피즈버즈 숫자가 3과 5의 배수이면 else가 인쇄됩니다. 숫자 그 자체.