ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (Java)2차원 배열로 퀴즈 만들기
    개발 완료 2020. 4. 7. 13:44
    반응형

    (이 코드는 자바의 정석 기초 편을 활용했습니다)


    목적

    • 2차원 배열 사용
    • 열(Row)에 질문, 정답을 넣는다
    • 먼저 질문을 가지고 오고, 같은 열의 정답과 비교한다
    • 추가적으로 제가 맞춘 정답의 확률을 가지고 왔습니다

     

     

    코드

    public class Main {
        public static void main(String[] args) {
            String[][] words = {
                    {"chair", "의자"},
                    {"Computer", "컴퓨터"},
                    {"Integer", "정수"},
            };
    
            int total = 0;
            float avg = 0.0f;
    
            for (int i = 0; i < words.length; i++) {
                System.out.printf("Q%d. %s의 뜻은? ", i + 1, words[i][0]);
    
                Scanner scanner = new Scanner(System.in);
                String tmp = scanner.nextLine();
    
                if (tmp.equals(words[i][1])) {
                    System.out.println("정답입니다 \n");
                    total += 1;
    
                } else {
                    System.out.printf("틀렸습니다. 정답은 %s 입니다.%n%n", words[i][1]);
                }
                avg = (total / (float) words.length)*100;
            }
            System.out.printf("정답률: %.2f ", avg);
        }
    }

    결괏값


    코드 설명

            String[][] words = {
                    {"chair", "의자"},
                    {"Computer", "컴퓨터"},
                    {"Integer", "정수"},
            };

     

    2차원 배열을 사용했습니다. 

    2차원 배열은 주로 테이블 형태의 데이터를 담는 데 사용이 되며, 

    3열 3행으로써 9개의 메모리 공간이 할당됩니다.

     

    words.length = 3입니다.

    왜냐하면 2차원 배열은 기본적으로 배열을 참조해서 또 하나의 배열을 만드는 것입니다.

    즉 1개의 배열을 1개의 길이로 판단합니다.

    즉 3개의 배열이 뭉쳐져서 1개의 배열이 되었기에, words 배열의 길이는 3입니다.

     

     

     

     

     

            int total = 0;
            float avg = 0.0f;

     

    정답 개수를 다 합치고, 그것을 평균으로 계산하기 위한 변수 초기화입니다.

     

     

            for (int i = 0; i < words.length; i++) {
                System.out.printf("Q%d. %s의 뜻은? ", i + 1, words[i][0]);
    
                Scanner scanner = new Scanner(System.in);
                String tmp = scanner.nextLine();
    
                if (tmp.equals(words[i][1])) {
                    System.out.println("정답입니다 \n");
                    total += 1;
    
                } else {
                    System.out.printf("틀렸습니다. 정답은 %s 입니다.%n%n", words[i][1]);
                }
                avg = (total / (float) words.length)*100;
            }
            System.out.printf("정답률: %.2f ", avg);

     

    for문 시작합니다

     

    먼저 화면에 첫 번째 질문을 띄워줍니다. 

    Q%d = Q1이 됩니다.

    i가 0이므로, i+1는 1입니다.

     

    words[i][0]을 넣어서, 열이 바뀌더라도 무조건 0번째 행이 출력되게 합니다.

    왜냐하면 0번째 행은 모두 질문이고, 1번째 행은 답변이기 때문입니다.

     

    Scanner 클래스, tmp변수를 이용해서 입력값을 받아옵니다.

     

     

    if문 시작합니다

     

    만약에 사용자가 입력한 값이 i번째 열(row)의 1번째 행(column)과 같다면, 정답입니다

    정답이기에 total의 값을 1 증가시켜줍니다.

     

    만약에 정답이 아니라면, 정답을 출력시켜줍니다.

     

     

    avg를 이용해서 정답률을 구합니다.

    words.length는 3이므로 정답수/3 * 100 해줍니다. 

     

    정답률을 출력해줍니다. 소수점이므로 f를 사용합니다.

    정답률에 따라서 소수점 2자리까지 보여주기 위해서 .2f를 사용합니다.

     

     

    반응형

    댓글

Designed by Tistory.