Notice
Recent Posts
Recent Comments
Link
Everything has an expiration date
★ 059 - Java 3중 for문 하나를 사용하여 4행 2열의 구구단을 출력하는 프로그램 본문
package Test059;
/*========================================================
■■■ 실행 흐름의 컨트롤(제어문) ■■■
- 반복문(for문) 실습 및 관찰
- 다중 for문(반복문의 중첩)을 활용한 구구단 출력 실습
=========================================================*/
// 실행 예)
/*
2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5
2 * 2 = 4 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10
: : : :
2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45
6 * 1 = 6 7 * 1 = 7 8 * 1 = 8 9 * 1 = 9
6 * 2 = 12 7 * 2 = 14 8 * 2 = 16 9 * 2 = 18
: : : :
6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
*/
// ① 2중첩 * 2
// ③ 3중첩
/* ① 내 풀이
public class Test059
{
public static void main(String[] args)
{
int i, j;
for (i = 1; i <= 9 ; i++)
{
for (j = 2; j <= 5 ; j++)
{
System.out.printf("%2d * %2d = %2d ", j, i, (j*i));
if (j == 5)
{
System.out.println();
}
}
}
System.out.print("\n\n");
for (i = 1; i <= 9 ; i++)
{
for (j = 6; j <= 9 ; j++)
{
System.out.printf("%2d * %2d = %2d ", j, i, (j*i));
if (j == 9)
{
System.out.println();
}
}
}
}
}
*/
// ② 내 풀이
/*
행을 바꿔주기 위해
새로운 loof 변수 k를 선언하여 3중 중첩 for문을 사용하도록 하자!
이때, 구구단 출력은 행의 값에 따라 다르게 출력 되어야 한다.
① 행(column)의 값(k)이 1일 때 : 2 ~ (열(row) + 1) 까지의 단만 출력하고 (① 2 ~ 5단 출력)
② 행(column)의 값(k)이 2일 때 : 6 ~ 9 까지의 단을 출력하도록 한다.
【Logic】▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
[열 : 4, 행 : 2인 구구단 출력하기?]
▶ ①번 풀이에서 썼던 방식대로, i는 2~5까지만 증가하도록 for문을 돌린다.
만약, i를 2~9까지 반복시켜 버리면, 구구단의 줄바꿈을 실행할 수 없다.
(2단 3단 4단 5단 … 9단까지 일렬로 출력해버림.)
★☆ 즉, i는 2~5(열+1값)까지의 값을 유지하되
--------------------------
행값을 1 증가시켰을 때 6~9단까지 연산을 수행할 수 있도록 하는 것이 관건이다.
----------------------------------------------
● [ i | 열 | 행 | 원하는 결과값(구구단 단의 값(0~9) ]
2 4 1 → 2 ▶ i값 2에 0을 더하면 2 ◎ >> 행의 값 = 1 일 때는
3 4 1 → 3 ▶ i값 3에 0을 더하면 3 『 i + 0(열의 값 * 0) 을 수행한다. 』
4 4 1 → 4 ▶ i값 4에 0을 더하면 4
5 4 1 → 5 ▶ i값 5에 0을 더하면 5
2 4 2 → 6 ▶ i값 2에 4를 더하면 6 ◎ >> 행의 값 = 2 일 때는
3 4 2 → 7 ▶ i값 3에 4를 더하면 7 『 i + 4(열의 값) 를 수행한다. 』
4 4 2 → 8 ▶ i값 4에 4를 더하면 8
5 4 2 → 9 ▶ i값 5에 4를 더하면 9
[알 수 있는 결론!]
★☆★☆==> [ i + ( 열의 값(=4) * 행값-1) ] 수식이 구구단 단의 값이 된다!
★☆★☆==> 이 수식 결과값을 resultI로 받아, 『 for문 i 출력문의 단 』으로 설정하자!
▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
*/
public class Test059
{
public static void main(String[] args)
{
// 1. 변수 선언 **************************************************************************
int i; //--> 구구단의 단을 출력하는 변수 i → (2 * 1 3 * 1 4 * 1 5 * 1)
// --- --- --- ---
// i i i i
int j; //--> 구구단의 곱하는 수를 출력하는 변수 j → (2 * 2 3 * 2 4 * 2 5 * 1)
// --- --- --- ---
// j j j j
int k; //--> 구구단의 행을 나타내는 변수 k ↑ 행 = 2행 (2줄)
int row = 4; //--> 구구단의 열을 나타내는 변수 row ↑ 열 = 4열 (한 줄 당 4개 값)
int resutI; //--> ★☆★☆★☆ [ i + ( 열의 값(=4) * 행값-1) ]의 값을 담는 변수. i 대신 구구단 출력의 단이 되어준다.
// 2. 3중첩 for문을 이용해 Logic을 처리한다.***************************************************
for (k = 1; k <= 2 ; k++) //--- 구구단 출력의 행을 나타내는 부분.
{
for (j = 1; j <= 9 ; j++) //--- 구구단 출력의 곱하는 수를 나타내는 부분.
{
for ( i = 2 ; i <= (row+1) ; i++ ) //[ i + ( 열의 값(=4) * 행값-1) ]
{
//System.out.println("[i] : " + i);
//System.out.println("[열 * (행-1)] : " + (row * (k-1)));
// ↓ ★☆ 이번 for문 3중첩 Logic의 keyPoint 변수!! 『 resultI 』
resutI = i + ((k-1) * row); //--- [ i + ( 열의 값(=4) * 행값-1) ]으로,
// ▶ 행 k = 1일 때 → 『 2 ~ 5 단 출력 』
// ▶ 행 k = 2일 때 → 『 6 ~ 9 단 출력 』
System.out.printf("%2d * %2d = %2d ", resutI, j, (resutI * j));
}//end for i
System.out.println();
}//end for j
System.out.println();
}//end for k
}
}
// 실행 결과
/*
2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5
2 * 2 = 4 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10
2 * 3 = 6 3 * 3 = 9 4 * 3 = 12 5 * 3 = 15
2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 5 * 4 = 20
2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30
2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35
2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40
2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45
6 * 1 = 6 7 * 1 = 7 8 * 1 = 8 9 * 1 = 9
6 * 2 = 12 7 * 2 = 14 8 * 2 = 16 9 * 2 = 18
6 * 3 = 18 7 * 3 = 21 8 * 3 = 24 9 * 3 = 27
6 * 4 = 24 7 * 4 = 28 8 * 4 = 32 9 * 4 = 36
6 * 5 = 30 7 * 5 = 35 8 * 5 = 40 9 * 5 = 45
6 * 6 = 36 7 * 6 = 42 8 * 6 = 48 9 * 6 = 54
6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63
6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 9 * 8 = 72
6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
*/