반응형
주요 코드 구조
- Question 클래스: 질문, 보기, 정답을 하나로 묶는 데이터 구조에요.
- 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();
}
}
실행 방법
- 메모장이나 코드 에디터에 위 코드를 붙여넣고 IQTest.java라는 이름으로 저장하세요.
- 터미널(명령 프롬프트)을 열고 파일이 저장된 폴더로 이동하세요.
- javac IQTest.java 명령어로 코드를 컴파일하세요. (IQTest.class 파일이 생성돼요.)
- 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 입니다.
(주의: 이 테스트는 재미를 위한 것이며, 전문적인 검사가 아닙니다.)
반응형