─━ IT ━─

쉽게 구현한 자바 콘솔 IQ 검사 프로그램

DKel 2025. 10. 16. 09:22
반응형

주요 코드 구조

  1. Question 클래스: 질문, 보기, 정답을 하나로 묶는 데이터 구조에요.
  2. IQTest 클래스 (메인): 실제 퀴즈를 진행하고, 문제를 출제하며, 사용자 입력을 받고, 점수를 계산하는 핵심 로직이 들어있어요.

전체 자바 코드

아래 코드를 IQTest.java 파일로 저장하고 컴파일한 뒤 실행하면 돼요.

import java.util.Scanner;

// 질문, 보기, 정답을 저장하는 클래스
class Question {
    String text;     // 질문 내용
    String[] options;  // 보기 목록 (배열)
    int correctAnswer; // 정답 번호 (1부터 시작)

    // 생성자: 질문 객체를 만들 때 초기값을 설정
    public Question(String text, String[] options, int correctAnswer) {
        this.text = text;
        this.options = options;
        this.correctAnswer = correctAnswer;
    }
}

// 메인 IQ 테스트 프로그램
public class IQTest {

    public static void main(String[] args) {
        // Scanner 객체 생성 (사용자 입력을 받기 위함)
        Scanner scanner = new Scanner(System.in);

        // 퀴즈에 사용할 질문 목록 생성
        Question[] questions = {
            new Question(
                "다음 수열에서 빈칸에 들어갈 숫자는? \n 1, 4, 9, 16, __",
                new String[]{"20", "25", "30", "32"},
                2 // 정답: 25 (제곱수)
            ),
            new Question(
                "'책'이 '독서'에 대한 관계는 '포크'가 무엇에 대한 관계와 같은가?",
                new String[]{"요리", "음식", "식사", "주방"},
                3 // 정답: 식사
            ),
            new Question(
                "다음 중 성격이 다른 하나는?",
                new String[]{"개", "고양이", "사자", "참새"},
                4 // 정답: 참새 (조류)
            ),
            new Question(
                "모든 사람은 죽는다. 소크라테스는 사람이다. 따라서?",
                new String[]{"소크라테스는 죽는다.", "소크라테스는 죽지 않는다.", "모든 사람은 소크라테스다."},
                1 // 정답: 소크라테스는 죽는다.
            ),
            new Question(
                "정육면체를 펼쳤을 때 나올 수 없는 전개도는? (상상으로 풀어보세요)",
                new String[]{"가능한 모양 1", "불가능한 모양", "가능한 모양 2"},
                2 // 가상의 문제 (논리적 추론)
            )
        };

        int score = 0; // 사용자의 점수를 저장할 변수

        System.out.println("--- 간단 IQ 테스트를 시작합니다 ---");
        System.out.println("각 문제의 정답이라고 생각하는 번호를 입력하세요.\n");

        // 반복문을 이용해 모든 질문을 하나씩 출력
        for (int i = 0; i < questions.length; i++) {
            System.out.println("Q" + (i + 1) + ". " + questions[i].text); // 질문 출력

            // 보기 출력
            for (int j = 0; j < questions[i].options.length; j++) {
                System.out.println("  " + (j + 1) + ". " + questions[i].options[j]);
            }

            // 사용자에게 답변 입력받기
            System.out.print("정답 입력: ");
            int userAnswer = scanner.nextInt();

            // 정답 확인
            if (userAnswer == questions[i].correctAnswer) {
                System.out.println("정답입니다!\n");
                score++; // 점수 1 증가
            } else {
                System.out.println("오답입니다. 정답은 " + questions[i].correctAnswer + "번 입니다.\n");
            }
        }

        // 최종 결과 출력
        System.out.println("--- 테스트가 종료되었습니다 ---");
        System.out.println("총 " + questions.length + "문제 중 " + score + "문제를 맞혔습니다.");

        // 점수에 따른 간단한 IQ 추정치 제공
        int estimatedIQ = 85 + (score * 10);
        System.out.println("당신의 추정 IQ 점수는 약 " + estimatedIQ + " 입니다.");
        System.out.println("(주의: 이 테스트는 재미를 위한 것이며, 전문적인 검사가 아닙니다.)");

        // Scanner 객체 닫기
        scanner.close();
    }
}

실행 방법

  1. 메모장이나 코드 에디터에 위 코드를 붙여넣고 IQTest.java라는 이름으로 저장하세요.
  2. 터미널(명령 프롬프트)을 열고 파일이 저장된 폴더로 이동하세요.
  3. javac IQTest.java 명령어로 코드를 컴파일하세요. (IQTest.class 파일이 생성돼요.)
  4. java IQTest 명령어로 프로그램을 실행하고 테스트를 진행하세요.

실행 결과 예시

--- 간단 IQ 테스트를 시작합니다 ---
각 문제의 정답이라고 생각하는 번호를 입력하세요.

Q1. 다음 수열에서 빈칸에 들어갈 숫자는?
 1, 4, 9, 16, __
  1. 20
  2. 25
  3. 30
  4. 32
정답 입력: 2
정답입니다!

Q2. '책'이 '독서'에 대한 관계는 '포크'가 무엇에 대한 관계와 같은가?
  1. 요리
  2. 음식
  3. 식사
  4. 주방
정답 입력: 3
정답입니다!

... (테스트 계속 진행) ...

--- 테스트가 종료되었습니다 ---
총 5문제 중 4문제를 맞혔습니다.
당신의 추정 IQ 점수는 약 125 입니다.
(주의: 이 테스트는 재미를 위한 것이며, 전문적인 검사가 아닙니다.)
반응형