자바를 시작하는 사람이라면 누구나 구구단 예제를 본적이 있을 것이다. 오늘은 구구단을 출력 3가지 방법을 소개한다.
자바에서 구구단을 출력하는 방법 중 가장 대중적인 방법은 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();
}
}
}
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);
}
}
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
댓글 영역