예16)
이렇게 별찍기를 하려면 어떻게 해야될까?
System.out.println("**********"); 을 5번 반복할 수 있다.
그러나 for문을 사용하면
public class FlowEx16 {
public static void main(String[] args) {
for(int i=1; i<=5; i++) {
System.out.println("**********");
}
}
}
System.out.println("**********"); 을 for문을 이용해 5번 반복했다.
System.out.println("**********"); 여기서 * 도 10번 찍혔는데 이것도 for문을 이용해서 반복적으로 하나만 찍어도 10개를 반복하게 해보자.
public class FlowEx16 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 10; j++) {
System.out.printf("*");
}System.out.println();
}
}
}
안의 for문으로 *이 printf로 붙어서 10개 출력되고 나면, System.out.println(); 으로 한 칸 줄 띄운다.
또 같은 안의 for문 10번 반복을 바깥 for문으로 5번 반복한다.
j의 조건식에 따라 *이 아래처럼 출력된다.
for(int j=1; j<=1; j++){System.out.printf("*");}System.out.println(); //*
for(int j=1; j<=2; j++){System.out.printf("*");}System.out.println(); //**
for(int j=1; j<=3; j++){System.out.printf("*");}System.out.println(); //***
for(int j=1; j<=4; j++){System.out.printf("*");}System.out.println(); //****
for(int j=1; j<=5; j++){System.out.printf("*");}System.out.println(); //*****
이걸 i값으로 5번 반복해주고
public class FlowEx16_2 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) { //i값에 따라 j가 동일하게 바뀜
System.out.printf("*");
}System.out.println();
}
}
}
바깥 for 문이 1,2,3,4,5까지 반복될 때 안의 for 문이 i따라서 반복되어 i만큼 옆으로 *을 찍는다.
예17) //숫자를 입력받아 라인만큼 * 찍기
import java.util.*;
public class FlowEx17 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("*을 출력할 라인의 수를 입력하세요: ");
int line = sc.nextInt();
for (int i = 1; i <= line; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("*");
}
System.out.println();
}
}
}
예18) //구구단 출력
public class FlowEx18 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.printf("%d*%d=%d%n", i, j, (i * j));
}
System.out.println();
}
}
}
1단 부터 9단까지 출력했다, 안쪽 for문은 하나의 단을 출력하는데, 바깥의 for문은 안쪽 for문을 9번 반복 출력한다.
->바깥쪽 for문이 한 번 반복될 때마다 안쪽 for문이 모두 끝나고 나서 다음 바깥 for문 반복으로 넘어간다.
예19) 자리수 모두 1,2,3 순서대로 반복 출력
public class FlowEx19 {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
for (int k = 1; k <= 3; k++) {
System.out.printf("%d%d%d%n", i, j, k);
}
}
}
}
}
각 반복문이 3번씩 반복하므로 모두 (3*3*3=27)이 반복된다.
System.out.printf("%d%d%n", i, j, k) 부분을 System.out.println(""+i+j+k); 로 바꿀 수도 있다.
(참고)
""+7+7="77" 이 된다.
문자열+any type=문자열
예20)
public class FlowEx20 {
public static void main(String[] args) {
for(int i=1; i<=5; i++) {
for(int j=1; j<=5; j++) {
System.out.printf("[%d,%d]", i,j);
}System.out.println();
}
}
}
만약 7열로 바꾸고 싶으면 i<=5를 i<=7로 바꾸면 된다.
예21) 고민해보기!!
'JAVA > 조건문(if, switch)과 반복문(for, while)' 카테고리의 다른 글
[JAVA] while문 (0) | 2021.06.12 |
---|---|
[JAVA] 향상된 for 문 (0) | 2021.06.12 |
[JAVA] for문 (0) | 2021.06.10 |
[JAVA]Math.random() (0) | 2021.06.09 |
[JAVA] switch문 예제(계절 /가위바위보(난수)/주민등록번호/점수에 따른 학점 출력) (0) | 2021.06.09 |