< 문제 >
입출력을 이용한 속담 퀴즈 만들기
< 문제 조건 >
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("==== 퀴즈 게임 종료 ====");
}
}
< 결과 >