Scanner 클래스에 대해서는 이전 포스팅을 참고해주세요.
아래와 같이 단수를 입력하면('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();
}
}
댓글