본문 바로가기
언어(Language)/[자바] 심화(Effective)

입출력을 이용한 속담 퀴즈 만들기

by 쿠키쿠 2023. 4. 25.

< 문제 >

입출력을 이용한 속담 퀴즈 만들기

 

< 문제 조건 >

1) quiz.txt 파일 생성하여 문제와 정답을 각각 한줄로 작성하여 구성 ( 퀴즈3개 -> 총 6줄 )

2) 사용자로부터 값을 입력받아 정답 여부 확인 -> 오답일 경우 정답안내 

3) 모든 퀴즈가 끝날때 까지 반복

 

< 슈도 코드 작성 >

1) BufferedWriter 클래스와 FileWriter 클래스를 사용하여 "quiz.txt" 파일을 생성한 후 퀴즈와 정답을 입력

2) BufferedReader 클래스와 FileReader 클래스를 사용하여 "saying.txt" 파일을 읽어오기

3) readLine 메서드를 이용 -> "quiz.txt" 파일에 저장된 값을 한 줄씩 읽어옴 ->  Scanner 클래스를 이용 및 nextLine 메소드를 사용하여 사용자가 입력한 값과 비교

*** 이때  ' == ' 연산자는 참조값을 비교하므로  문자열 == 문자열  비교 할 수 없다 

-->  equals() 사용하여 비교

4) 정답 -> 정답이야 , 오답 -> 오답이야 출력 

5) 퀴즈 다 끝나면 종료 시키기 --> 문제나 정답에 null 이 있으면 반복문 탈출

 

 

 

< 코드 >

 

package 입출력;

import java.io.*;
import java.util.Scanner;

public class _Quiz_13 {

    public static void main(String[] args) {
        String fileName = "quiz.txt";
        File quizFile = new File(fileName);
        
        // 1) "quiz.txt" 파일 생성
        try {
            if(quizFile.exists()){
                System.out.println("이미 파일이 존재합니다.");
            } else {
                quizFile.createNewFile();
                System.out.println("파일 생성 완료");
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        
		// 2) 문제와 정답 입력
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(quizFile));
            bw.write("소 잃고 ___ 고친다");
            bw.newLine();
            bw.write("외양간");
            bw.newLine();
            bw.write("천 리 길도 한 __부터");
            bw.newLine();
            bw.write("걸음");
            bw.newLine();
            bw.write("세 살 __ 여든까지 간다");
            bw.newLine();
            bw.write("버릇");
            bw.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        
        // 3) 파일 읽어와서 입력 값과 비교하기
        try {
            BufferedReader br = new BufferedReader(new FileReader(quizFile));
        
            String question;
            String answer;
            String userInput;

            System.out.println("==== 퀴즈 게임 시작 ====");
            
            while(true){
            	question = br.readLine();
                answer = br.readLine();

                if(question == null || answer == null){
                    break;
                }
                System.out.println("문제 : " + question);
                System.out.print("정답 입력 => ");
                userInput = sc.nextLine();

                if(userInput.equals(answer)){
                    System.out.println("정답입니다.\n");
                } else {
                    System.out.println("오답입니다. 정답은 '" + answer + "' 입니다.\n");
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        System.out.println("==== 퀴즈 게임 종료 ====");

    }
}

 

 

< 결과 >