Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Everything has an expiration date

★ 059 - Java 3중 for문 하나를 사용하여 4행 2열의 구구단을 출력하는 프로그램 본문

[Java]/review

★ 059 - Java 3중 for문 하나를 사용하여 4행 2열의 구구단을 출력하는 프로그램

Jelly-fish 2023. 9. 1. 02:32
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   
 */