오늘은 반복문의 개념을 확실히 학습하고자 마름모 별찍기를 분석해 볼거야
처음 봤을때는 이해가 잘 안되길래 코드 한줄씩 분석하고 코드가 어떻게 실행되는지 알아봤어 이제 코드를 보자면
class Main {
public static void main(String[] args) {
int n = 4; // 정수 n만 들어갈 수 있는 변수에 4를 넣음
for (int i = 1; i <= n; i++) { // 정수 i를 생성해 n번까지 즉 4번 반복문을 실행
for (int j = i; j < n; j++) { // j를 생성해 정수 i를 넣음
// 반복을 돌고 n미만으로 즉3번까지 반복을 실행
System.out.print(""); // 가로로 빈칸을 출력
} // 두번째 for문은 그러므로 처음에는 빈칸이 3번, 그다음 출력때는 2번, 다음은 1번 출력
for (int k = 1; k <= (2 * i - 1); k++) { // 변수 k에 값 1을 넣음,
//변수 k는 i=1이면 1, i=2면 3, i=3이면,5,i=4면,7 까지 반복문을 수행
System.out.print("*");// 가로로 *을 출력
} // 세번째 for문은 *을 1개, 3개, 5개, 7개를 출력한다는 문장임
System.out.println(); // 줄바꿈
}// 그러므로 반복문을 수행할 때 첫번째는 빈칸3개에 *하나,
//빈칸2개에 *3개 빈킨 1개에 *5개 다음은 *만 7개 찍히는 모습을 볼 수 있어서 트리형태의 값을 볼 수 있음
for (int i = n - 1; i >= 1; i--) { // 변수 i는 n-1 즉 3을 집어넣음 i는3부터 1까지 반복 수행 , i는 1씩 감소
for (int k = n; k > i; k--) { // 변수k는 n 즉 4를 넣음. k는 4부터 i초과까지 반복 수행, k는 1씩 감소
System.out.print(""); // 가로로 빈칸 출력
} //k의 초기값은 4이고 i는 3 이기때문에 빈칸은 한번만 출력된다. 3>3은 거짓이니까!
//그러므로 i가 3->2->1로 감소함에 따라 빈킨이 1개->2개->3개로 증가
for (int k =1; k <= (2 * i - 1); k++) { //변수 k에 1을 넣고 i=3부터 시작이니까
//k는 i=3일때 5번 반복 되고 i=2일때는 3, i=1일때는 1이 나오도록 *을 찍어
System.out.print("*");// 가로로 * 출력
}// 결론은 행의 갯수가 늘어날수록 빈칸은 증가되고 *은 감소되는 현상을 볼 수 있어
System.out.println();
}
}
}
나는 처음 삼각형 하나랑 역삼각형 하나를 만든다고 생각을 하고 분석을 해보았어
잘 보고 갑니다