/*
* 문제
* 1. 두수의 더하기를 맞추는 무제를 지속적으로 출제하는 프로그램입니다.
* 2. 2가지의 저수를 1~100사이의 난수를 발생 시켜 지속적으로 문제를 출제한 후 정답이면
* 정답 카운트를 +1씩 , 틀리면 오답 카운트를 +1씩 올려주는 프로그ㅜ램을 만드세요
* 또 한 이 프로그램은 0 을 입력 받으면 반복을 중단(탈출)합니다
* ex) 27 + 84 = ?
*/
- 1 ~ 100 까지의 정수를 2가지 난수를 발생 시켜, 지속적으로 문제를 출제한 후 정답이면 정답 카운트를 +1 씩, 틀리면 오답 카운트를 +1 씩 올려주는 프로그램을 만드세요.
또한 이 프로그램은 0을 입력 받으면 반복을 중단(탈출) 합니다.
먼저, 정수를 입력받기 위해 Scanner를 써줍시다.
1. 무한 반복문을 만들어 주세요
2. 2가지의 난수를 발생시켜 저장 시켜 주세요
3. 출력을 맞춰 줍니다.
4. 정수를 입력 받습니다.
5. 받은 정수가 0인지 검사합니다.
6. 2가지 정수를 합한 값과 입력받은 정수가 같은지 검사합니다.
7. 맞다면 정답 카운트를, 틀렸다면 오답 카운트를 올려줍니다.
8. 0을 입력했다면, 무한 반복문 바깥에서 정답 횟수와 틀린 횟수를 출력해 줍니다.
결과값
Scanner scan = new Scanner(System.in); //스캐너 생성
int okCount = 0; // 정답 카운트 설정
int noCount = 0; // 오답 카운트 설정
while (true) {
int num1 = (int) (Math.random() \* 100) + 1; // num1 1~100까지 랜덤 수 설정
int num2 = (int) (Math.random() \* 100) + 1; //num2 1~100까지 랜덤 수 설정
System.out.println("--------------------------------"); // 양식 설정하고 출력
System.out.println(num1 + " + " + num2 + " = ?");
System.out.println("[문제를 그만 푸시려면 0을 입력하세요]");
System.out.print(">");
int answer = scan.nextInt(); // 정답을 입력 받는다
if (answer == 0) {
System.out.println("프로그램을 종료합니다"); // 만약 정답의 값이 0이면 "프로그램을 종료합니다" 출력
break; // 위에 if문을 타고 갔다면 정지시킨다.
}
if (answer == num1 + num2) { //만약 정답이 num1 + num2 이면 "정답입니다"출력후 정답 카운트 1증가
System.out.println("정답입니다.");
okCount++;
} else { // else 정답이 num1 + num2 가 아니면 "오답입니다" 출력후 오답 카운트 1증가
System.out.println("오답입니다.");
noCount++;
}
} // while 종료 후 상황
System.out.println("정답: " + okCount); //정답: 정답갯수 출력
System.out.println("오답 :" + noCount); // 오답" 오답 갯수 출력
scan.close();
======================================================
while(boolean형태의 조건문) {
** 조건문이 true일경우 실행**
}
while문에 필요한 것들 1. int a = 1; 제어변수 2. 조건식 3. 증감식..
예시를 들어보면
int a = 1; // 제어변수 : 반복문의 횟수를 제어할 변수
int sum = 0; // 합계 변수 - while문 밖에 선언
while (a <= 10) {
sum = sum + a; // sum + = a; 같은표현임
a++; // 제어변수를 하나 증가해서 반복의 조건식이 언젠가 false되도록 처리
}
System.out.println("합계: " + sum);
선생님이 풀어준 형식
결과는 같다
int oper = (int) (Math.random() * 2); // 0 or 1
System.out.println(num1 + (oper == 1 ? " + " : " - ") + num2 + " = ?"); // 삼항연산자이용
int result = (oper == 1 ? num1 + num2 : num1 - num2);
if (answer == 0 && num1 + num2 != 0) {
System.out.println("프로그램을 종료합니다");
}
선생님께서 풀어주신 풀이가 가독성이 좋아보이며 우리에게 전에 알려준 것들을 사용하셔서
잊은 것들을 다시 알려주신 것같다. 삼항연산자와 && 사용법 기억해둘것
'Java 공부 > Quiz' 카테고리의 다른 글
Day07- Quiz23 (0) | 2021.08.23 |
---|