본문 바로가기
Java

[Java] Scanner 클래스를 활용한 console에서 단을 입력 받으면 구구단 출력하는 프로그램

by bkuk 2022. 10. 5.

Scanner 클래스에 대해서는 이전 포스팅을 참고해주세요.

 

[Java]Scanner 클래스

Scanner의 특징 첫번째, 예를 들어 100을 입력하고자 할 때, String(문자열)로 입력받고 싶으면 next()나 nextLine() 메서드를 사용하고 int(정수)로 입력받고 싶다면 nextInt() 메서드를 사용해서 입력을 받으

starting-coding.tistory.com


아래와 같이 단수를 입력하면('1단', '2단', ..... n단) 출력해주는 프로그램을 만들고자 합니다.

 

1. Scanner 클래스 생성

Scanner scan = new Scanner( System.in );

 

 

2. console을 통해 입력받은 내용을 대입 할 변수 선언 후 초기화

String msg = "";

 

3. 무한루프 특성을 이용한 while문 작성 

while( true ) {
    System.out.print( "단수 > ");	// 입력받을 console 초기화면 
    msg = scan.nextLine();	// 변수를 통해 입력받은 단수 대입
    }

 

4. equals() 메서드와 if문을 활용해서 특정 문자열('exit')를 입력받으면 종료

 

if( !msg.equals( "exit" ) ) { }

 

특정 문자열을 받는다는 의미"1단" , "2단" .... 등을 입력하다가 프로그램을 종료하고 싶을 때

사용하는 문자열이라고 생각하면 됩니다.

아래와 같이 명령 프롬프트(cmd) 에서 종료할 때 사용하는 명령어와 같은 의미입니다.

 

여기서 equals() 메서드 말고 == 연산자를 사용할 수 도 있지 않나? 라고 생각하실 수 있습니다.

  • == 연산자의 경우 서로 같은 인스턴스라면 true, 아니면 false를 반환합니다.
  • quals() 메서드의 원래 기능은 두 인스턴스의 주소 값을 비교하여 boolean값을 반환줍니다. 하지만 String 클래스에서는  같은 문자열의 경우 true를, 그렇지 않은 경우 false를 반환하도록 재정의되어 있습니다.
  •  

따라서 euqals 메서드를 사용합니다.

 

5. replaceAll("변경 전 문자열", "변경 후 문자열")입력받은 문자열에서 '단' 을 빼기

String dan = msg.replaceAll( "단", "" );

 

6. 서식있는 출력(printf) 메서드와 정수화를 시킨후 출력

 

System.out.printf( "%s X %s = %s\t", dan, i, ( Integer.parseInt( dan ) * i) );

 

전체코드

import java.util.Scanner;

public class GugudanEx02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scan = new Scanner( System.in );
		
		String msg = "";
		
		while( true ) {
			System.out.print( "단수 > ");
			msg = scan.nextLine();
			
			if( !msg.equals( "exit" ) ) {
				String dan = msg.replaceAll( "단", "" );
				
				for( int i=1 ; i<=9 ; i++ ) {
					System.out.printf( "%s X %s = %s\t", dan, i, ( Integer.parseInt( dan ) * i) );
				}
				System.out.println();

			} else {
				System.out.println( "프로그램 종료" );
				break;
			}
		}
		
		scan.close();
	}

}

 

 

 

 

댓글