본문 바로가기
프로그래밍/Java, Spring

[Java] Scanner 입력 값으로 구구단 출력하기

by joeun 2022. 5. 3.

입력한 두 정수 사이의 구구단 출력하기 


Scanner sc = new Scanner(System.in);

 

Scanner 클래스를 이용하여 키보드 값을 입력받도록 하였고, while(true) 무한 루프문을 이용하여 입력받은 값이 조건에 만족하지 않으면 예외 메시지 출력 후 계속 루프문을 돌며 값을 다시 입력받도록 하였다. 

 

 

 

입력값 조건은 

1. 두 개의 값을 입력해야 하고,
2. 두 값 모두 정수(int)여야 하며,
3. 두 값 모두 2 이상 9 이하의 수여야 한다.

 

 

 

import java.util.Scanner;

public class Gugudan {
	public static void main(String[] args) {
    
		Scanner sc = new Scanner(System.in);
		
		String[] stringSplit;
		
		int min = 0; 
		int max = 0;
		
		while(true) 
		{
			System.out.println("시작 단과 끝 단, 두 개의 정수를 입력해주세요. 예) 3 5");
			System.out.print("입력: ");
			
			stringSplit = sc.nextLine().trim().split("\\s+");	// 공백으로 문자열 자르기 
			
			try
			{
				/*  1. 입력 값이 2개가 아닌 경우   */
				if(stringSplit.length != 2) 
				{
					throw new Exception("두 개의 값을 입력해야합니다. 다시 입력하세요.\n");	// 예외 던지기 
				}
				
				
				/*  2. 입력 값이 2개인 경우   */
				try 
				{ 
					// 두 값 중 작은 값을 min, 큰 값을 max iv에 저장
					min = Math.min(Integer.parseInt(stringSplit[0]), Integer.parseInt(stringSplit[1]));
					max = Math.max(Integer.parseInt(stringSplit[0]), Integer.parseInt(stringSplit[1]));
				}
				catch(NumberFormatException e) // 정수로 변환 안 될 경우 예외 처리 
				{	
					System.out.println("숫자만 입력 가능합니다.\n");
					continue;	// 예외 처리 후 다시 무한 루프문으로 이동
				}
				
				// 2-1. 입력값이 2개이고, 두 값 모두 2에서 9사이가 아닌 경우 
				if (!(1< min && min <= 9 && 1<max && max <= 9)) 
					throw new Exception("2에서 9 사이의 값만 입력 가능합니다. 다시 입력하세요.\n");	// 예외 던지기 
				
				// 2-2. 조건 모두 충족, 무한 루프 빠져 나가기
				break;	
					
			}
			catch(Exception e)
			{
				System.out.println(e.getMessage());
				continue;		// 예외 처리 후 다시 무한 루프문으로 이동
			}
		}// end of while(true)
		
		
		for (int i = min; i <= max; i++) // min단 부터 max단까지 구구단 출력
		{	
			for (int j = 1; j <= 9; j++) 
				System.out.printf("%d * %d = %d%n", i, j, i*j);
			System.out.println();
		}
		
		sc.close();	// Scanner 종료 
		
		System.out.println("프로그램 종료.");
		
	}// main()
}

* 한글 윈도우에서는 백슬래시(\)가 원화(₩) 기호로 나타남.

 

 

 

 

 

출력 결과


시작 단과 끝 단, 두 개의 정수를 입력해주세요. 예) 3 5 
입력: 3
두 개의 값을 입력해야합니다. 다시 입력하세요.

시작 단과 끝 단, 두 개의 정수를 입력해주세요. 예) 3 5 
입력: 54
두 개의 값을 입력해야합니다. 다시 입력하세요.

시작 단과 끝 단, 두 개의 정수를 입력해주세요. 예) 3 5 
입력: 1  9
2에서 9 사이의 값만 입력 가능합니다. 다시 입력하세요.

시작 단과 끝 단, 두 개의 정수를 입력해주세요. 예) 3 5 
입력: 3  w
숫자만 입력 가능합니다.

시작 단과 끝 단, 두 개의 정수를 입력해주세요. 예) 3 5 
입력: 3 ㄱ
숫자만 입력 가능합니다.

시작 단과 끝 단, 두 개의 정수를 입력해주세요. 예) 3 5 
입력: 2       3    
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

프로그램 종료.