상세 컨텐츠

본문 제목

Java 구구단 출력하는 3가지 방법

Java

by 소이 2020. 5. 23. 18:09

본문

자바를 시작하는 사람이라면 누구나 구구단 예제를 본적이 있을 것이다. 오늘은 구구단을 출력 3가지 방법을 소개한다.

1. for 문

자바에서 구구단을 출력하는 방법 중 가장 대중적인 방법은 for 문 사용이다. 

 

가로

public class Multiplication {

  public static void main(String[] args) {
    for (int i = 2; i <= 9; i++) {
      for (int j = 1; j <= 9; j++) {
        System.out.print(i + " * " + j + " = " + String.format("%2d", i * j));
        System.out.print("    ");
      }
      System.out.println();
    }
  }
}

결과

일의 자리와 십의 자리 수를 깔끔하게 정리하기 위해서 String.format 을 이용했다. 

가로로 잘 출력됐으면 세로로도 출력해보자.

방법은 i 와 j 만 변경하면 된다.

 

세로

public class Multiplication {

  public static void main(String[] args) {
    for (int i = 1; i <= 9; i++) {
      for (int j = 2; j <= 9; j++) {
        System.out.print(j + " * " + i + " = " + String.format("%2d", i * j));
        System.out.print("    ");
      }
      System.out.println();
    }
  }
}

결과

2. while문

for 문을 사용했으면 while문도 사용한다.

public class Multiplication {

  public static void main(String[] args) {
    int i = 1;
    while (i++ < 9) {
      int j = 0;
      while (j++ < 9) {
        System.out.print(i + " * " + j + " = " + String.format("%2d", i * j));
        System.out.print("    ");
      }
      System.out.println();
    }
  }
}

결과

while 을 해봤으니 당연히 do while 문도 사용해본다.

public class Multiplication {

  public static void main(String[] args) {
    int i = 2;
    do {
      int j = 1;
      do {
        System.out.print(i + " * " + j + " = " + String.format("%2d", i * j));
        System.out.print("    ");
      } while (j++ < 9);
      System.out.println();
    } while (i++ < 9);
  }
}

결과

3. IntStream.rangeClosed, IntStream.range

IntStream 은 자바8에서 추가된 interface  이다. 여기서 시작과 끝 값을 받는 rangeClosed 라는 static method 가 있는데 이를 이용하여 구구단을 출력해본다. rangeClosed 로 IntStream 객체를 생성하고 forEach 메소드를 이용하여 구구단을 출력한다.

IntStream : https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html

public class Multiplication {

  public static void main(String[] args) {
    IntStream.rangeClosed(2, 9).forEach(i -> {
          IntStream.rangeClosed(1, 9).forEach(j -> {
            System.out.print(i + " * " + j + " = " + String.format("%2d", i * j));
            System.out.print("    ");
          });
          System.out.println();
        });
  }
}

결과

IntStream 에는 range 라는 static method 도 존재하는데 rangeClosed 은 end 값까지 포함되지만 range는 포함을 하지 않는다. 그러므로 range 를 사용하려면 end 값을 10으로 넣어야 한다. 

public class Multiplication {

  public static void main(String[] args) {
    IntStream.range(2, 10).forEach(i -> {
          IntStream.range(1, 10).forEach(j -> {
            System.out.print(i + " * " + j + " = " + String.format("%2d", i * j));
            System.out.print("    ");
          });
          System.out.println();
        });
  }
}

결과

IntStream 이외에도 LongStream 이라는 interface도 있으니 참고하자.

LongStream : https://docs.oracle.com/javase/8/docs/api/java/util/stream/LongStream.html

 

댓글 영역