Java 수업/과제

구구단ver2

Booda 2019. 5. 19. 19:01
반응형

문제 1. 구구단ver2

구구단을 출력하는데 시작단,끝단,시작곱,끝곱, 그리고 표시할 총 줄수를 입력받는 코드를 입력하시오.

package practice.gugu2;

import java.util.Scanner;

public class Gugu2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int i, j, k;
		int num_1;
		int col;
		int startDan,endDan;
		int startMultiplicand,endMultiplicand;
		
		System.out.println("출력하고자 하는 시작단수를 입력하세요");
		startDan = sc.nextInt();
		System.out.println("출력하고자 하는 마지막 단수를 입력하세요");
		endDan = sc.nextInt();
		System.out.println("출력하고자 하는 첫번째 곱의 수를 입력하세요");
		startMultiplicand = sc.nextInt();
		System.out.println("출력하고자 하는 마지막 곱의 수를 입력하세요");
		endMultiplicand = sc.nextInt();
		System.out.println("한페이지에서 출력하고자하는 열의 수를 입력하시오.");
		col = sc.nextInt();
		
		//num_1의 값은 i의 값을 초기화 하는 역할뿐 아니라 i값엔 변화없이 증감을 주기위한 임시공간이다.
		//혹시나 다른 공간을 빌려서 쓸수있는게 있다면 알려주시면 감사할꺼같습니당 :)
		
		for (i = startDan; i <= endDan; i += col) {
			num_1 = i;
			for (j = startMultiplicand; j <= endMultiplicand; j++) {
				for (k = 1; k <= col; k++) {
					System.out.printf("%2d x %2d = %2d \t", i, j, (i * j));
					if (i < endDan) {
						i++;
					} else {
						break;
					}
				}
				System.out.println();
				i = num_1;
			}
			System.out.println();
		}
		sc.close();
	}
}

 

 

위의 코드는 총 3중 순환문을 사용하였다. 구구단같은 경우 2중 순환문을 사용하게 되는데 위의 조건중 하나인 한 화면에서 출력하고자 하는 줄수를 입력받아서 출력하기 위해선 하나의 루프가 더 들어가야만 했다.

그리고 i루프안에 증가값이 줄수의 값이랑 같은 이유는 i가 처음지정된값이 2이고 col이 3 이면 2,3,4단이 출력뒤 5단이 출력되어야 하니 3을 증가시켜서 출력을 하면된다.

 

k 가 시작되는 줄은 총 나타내고자 하는 줄의 반복문

j 가 나타내고자 하는 값은 시작곱 과 마지막곱사이의 반복문

i 가 나타내고자 하는 값은 시작단과 끝단을 표시하기위한 반복문이다.

 

그리고 변수 num_1을 쓴것은 k가 반복될때 i값이 증가되어야 그 다음단수가 보이기 때문에 num_1의 변수에 i의 값을 넣고 보존해놓은 다음에 k구문이 돌때 증가시켰다가 j구문 마지막에 다시 i를 초기화하는 구문이 들어가있다.

반응형