Helen57
10
2021-04-07 18:07:31
2
112

자바 랜덤 질문시 재질문


간단한 수학 게임을 만들고 있습니다.

랜덤으로 사칙연산으로 수학문제를 내고, 이 정답이 틀릴시 다시 같은 질문을 하게 하는건데 랜덤으로 질문을 만들어 내다보니 같은것을 어떻게 받아와야하는지 모르겠어서 여쭙니다.ㅜㅜ 혹시 아시는분 조언 부탁드립니다.

코드는 

mport java.util.Random;
import java.util.Scanner;

public class Question {

int value1;
int value2;
String operator;
int answer;

public Question () {
Random rand = new Random();

value1 = rand.nextInt(10);
value2 = rand.nextInt(10);

int questionType = rand.nextInt(4);
if (questionType == 0 || value2 == 0) {
operator = "+";
answer = value1 + value2;
} else if (questionType == 1) {
operator = "-";
answer = value1 - value2;
} else if (questionType == 2) {
operator = "*";
answer = value1 * value2;
} else {
operator = "/";
answer = value1 / value2;
}
}
// for testing
public Question(int v1, int v2, String operator){
value1 = v1;
value2 = v2;
this.operator = operator;
if (operator=="+") {
answer = value1 + value2;
} else if (operator=="-") {
answer = value1 - value2;
} else if (operator=="*") {
answer = value1 * value2;
} else {
answer = value1 / value2;
}
}

public void showQuestion() {
System.out.printf("What is %d %s %d?", value1, operator, value2);
}

//check the answer for the first question
public boolean checkAnswer() {
Scanner input = new Scanner(System.in);
int response = input.nextInt();
return(checkAnswer(response));
}
public boolean checkAnswer(int response){

boolean result = (response == answer);
if (result) {
System.out.printf(" Yes! the answer is correct.\n");
}
// else if(response != answer){
// System.out.printf("Wrong answer. Try again. \n");
// showQuestion();
// }
else {
System.out.printf(" No, the answer is %d.\n", answer);
}
return result;
}

}
0
  • 답변 2

  • 비밀이야
    220
    2021-04-07 18:16:09

    이전 문제와 이전 문제의 정답 여부를 전역변수에 저장해서 처리하면 되겠네요.

  • 장독깨기
    1k
    2021-04-07 19:12:05

    Question 클래스 생성자에서 문제를 만들지 말고,

    랜덤으로 문제내는 함수를 만들어 두면 되지 싶습니다.


    Question question = new Question();

    question.create();

    do {

      question.showQuestion();

    } while(question.checkAnswer() == false);


  • 로그인을 하시면 답변을 등록할 수 있습니다.