ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA/자바] 구구단 예제
    Language/Java 2018. 3. 2. 12:36
    반응형


    위의 그림과 같은 느낌의 프로그램을 개발하고 싶다.


    한번 만들어 보자.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    class 구구단{ // 이렇게 만들라고 알려준 반복문이 아닐텐데...
        public static void main(String[] args){
            System.out.println("2 * 1 = 2");
            System.out.println("2 * 2 = 4");
            System.out.println("2 * 3 = 6");
            System.out.println("2 * 4 = 8");
            System.out.println("2 * 5 = 10");
            System.out.println("2 * 6 = 12");
            System.out.println("2 * 7 = 14");
            System.out.println("2 * 8 = 16");
            System.out.println("2 * 9 = 18");
     
            System.out.println("3 * 1 = 3");
            System.out.println("3 * 2 = 6");
            System.out.println("3 * 3 = 9");
            System.out.println("3 * 4 = 12");
            System.out.println("3 * 5 = 15");
            System.out.println("3 * 6 = 18");
            System.out.println("3 * 7 = 21");
            System.out.println("3 * 8 = 24");
            System.out.println("3 * 9 = 27");
        }
    }
     
    cs

    설마 이런식으로 만들지는 않겠지??


    사실 구현하기만 된다는 조건이라면 정답이라는것이 없다.

    아니 조건이 다르다고 해도 프로그래밍에 정답은 없다가 맞는 말일 것이다.


    우리는 앞서 이론으로 반복문을 배웠고 , 예제로는 피라미드 만들기 예제 까지 해 보았다.

    반복문을 이용하지 않고 굳이 이렇게 귀찮게 작업할 필요가 없다.

    반복문을 이용한다면 구구단 표를 만들기 까지는 그리 어렵지 않다.



    1. 우선 한번 만들어 보자!!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class MT{    // Multiplication Table ( = 구구단 )
     
        void m(){
            for(int a = 1; a <= 9 ; a++){
                for(int b = 1 ; b <= 9 ; b++){
                    System.out.println(a + " * " + b + " = " + a*b);
                }
                System.out.println("");
            }
        }
        
        public static void main(String[] args){
            MT mt = new MT();
            mt.m();
        }
    }
    cs


    구구단표를 확인하기에는 조금 불편한 감이 없지 않아 있다.

    편의성을 위해 맨위의 그림처럼 출력 가능하게 한번 응용해보자.

    조금만 생각한다면, 금방 할수 있을 것이다.


    2. 응용해보자. 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class MT{    // Multiplication Table ( = 구구단 )
     
        void m(){
            for(int a = 1; a <= 9 ; a++){
                for(int b = 1 ; b <= 9 ; b++){
                    System.out.print(b + " * " + a + " = " + a*+ "\t");
                }
                System.out.println("");
            }
        }
        
        public static void main(String[] args){
            MT mt = new MT();
            mt.m();
        }
    }
    cs


    a 와 b 의 자리를 바꾸고 println 을 print 로 바꾼다면 옆으로 출력이 된다.

    좀더 괜찮게 만들어 진것 같다.


    3. 구구단 표만 본다고 해서 구구단이 외워질까?

       뭐든지 게임을 하면서 배우는건 재미있다고 느껴지고 

       재미가 있다면 학습효과는 향상된다.

       흥미를 유발할 수 있게 간단한 게임을 만들어 보자.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import java.io.*;
    import java.util.*;
     
    class MTG{    // Multiplication Table Game ( = 구구단 게임 )
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Random random = new Random();
        int ranN1 , ranN2 , result;
        int win , lose;
        String str;
        int answer;
     
        void question(){
            ranN1 = random.nextInt(9+ 1;    // 0 ~ 8 + 1 => 1 ~ 9
            ranN2 = random.nextInt(9+ 1;
            System.out.print(ranN1 + " * " + ranN2 + " = ");
            result = ranN1 * ranN2;
            input();
        }
     
        void input(){
            try{
                str = br.readLine();
                answer = Integer.parseInt(str);
                if(answer == result){
                    System.out.println("정답입니다. 정답 : " + (++win) + ", 오답 : " + lose + "\n");
                    question();
                }else if(answer == 999){
                    System.out.println("구구단 게임을 종료합니다. 총 게임수 : " + (win+lose) +", 정답 : " + win + ", 오답 : " + lose);
                    System.exit(0);
                }else{
                    System.out.println("틀렸습니다. 정답 : " + win + ", 오답 : " + (++lose) + "\n");
                    question();
                }
            }catch(IOException ioe){
                System.out.println("정답을 숫자로 입력해 주세요.");
                input();
            }
        }
        
        public static void main(String[] args){
            MTG mtg = new MTG();
            System.out.println(" 구구단 게임 [ 999 ] 를 입력 하면 종료합니다.");
            mtg.question();
        }
    }
    cs



    GUI 를 사용하여 외관을 더 꾸민다면 그럭저럭 괜찮은 결과물이 나올것 같다.


    1. 반복문 ( for / while ) 을 알고 싶다.

    2. IO 입출력 ( BufferedReader ) 을 알고 싶다.

    3. Random 함수를 알고 싶다.

    4. 예외처리 ( try{}catch(){} / throws ) 을 알고 싶다.

    5. 조건문 ( if(){}else{} ) 을 알고 싶다.

    반응형
Designed by Tistory.