JAVA(폐쇄)/문제풀이

JAVA - THREAD 클래스 -2

진사담 2023. 3. 8. 23:18
728x90
반응형

https://hobby-it-learn.tistory.com/12

 

JAVA Thread 클래스

이번 숙제는 Thread 클래스를 이용하여 코드를 작성하는 것이다. //Quiz Thread클래스를 만들어 스레드를 상속받는다. //startGame() 메서드를 만들고 그 안에서 1~100사이의 //난수 두개를 더하는 문제를

hobby-it-learn.tistory.com

이 문제 후편입니다..

 

문제 풀면서 while문으로도 할수있을까 생각했던 저에게

선생님은 그 방법을 알려주셨습니다 ㅎㅎ

 

main 클래스 코드입니다.

import java.util.Scanner;

public class QuizMain {
	public static void main(String[] args) {
		// Quiz Thread클래스를 만들어 스레드를 상속받는다.
		// startGame() 메서드를 만들고 그 안에서 1~100사이의
		// 난수 두개를 더하는 문제를 출제
		// 키보드에서 답을 입력하여 5문제가 정답처리 될때까지 로직을 반복한다
		// 정답을 맞히고 난 후에 모든 문제를 맞히는데 몇 초가 걸렸는지를 화면에 출력하며
		// 프로그램 종료

		// QuizMain 클래스에서는
		// QuizThread qt = new QuizThread();
		// qt.start(); 스레드 구동
		// qt.startGame(); 문제풀이 함수
		// 위 세줄 외에는 다른 코드는 추가하지 않도록 한다.

		// 단, 사용자가 문제의 정답으로 정수 이외의 문자를 입력했을 경우에
		// "정답은 정수로 입력하세요" 라는 문장이 출력되도록 한다.

		// ---------- 실행결과 ------------
		/*
		 * 23+48 =71 정답!! 66+100=166 정답!! 2+5=8 틀렸습니다. . 결과: 24초...
		 */

		Scanner sc = new Scanner(System.in);
		System.out.println("-------- 실행 결과 ---------- ");

		QuizThread qt = new QuizThread();
		Thread th = new Thread(qt);
		qt.start(); // run()메서드를 호출하는 메서드
		qt.startGame();

	}
}

 

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

import com.sun.net.httpserver.Authenticator.Result;
public class QuizThread extends Thread{
	
	int su1,su2;//난수 2개 넣어줄 변수
	int timer; //시간을 재기 위한 변수
	int count; //문제를 맞춘 개수를 세줄 변수
	boolean isCheck = true;
	final int FINISH = 5; //상수의 이름은 대문자.
	
	public void startGame() {
		while(isCheck) {
			su1 = new Random().nextInt(100)+1;
			su2 = new Random().nextInt(100)+1;
			System.out.printf("%d + %d = ",su1,su2);
			Scanner sc = new Scanner(System.in);
			int result = sc.nextInt(); //문제에 정답을 키보드에서 입력받기\
			
			//정답을 체크하는 로직
			if(result == (su1 + su2)) {
				System.out.println("정답!!"); //이 구단 아래에 count작성해도 됨.
			}else {
				System.out.println("틀렸습니다.");
				continue;
			}
			count++;
			
			if(count == FINISH) {
				System.out.println("결과 : " + timer + "초");
				isCheck = false;
			}
			}
	}
	@Override
	public void run() {
		
				try {
					Thread.sleep(1000);
					timer++;
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}	
	}

while과 if문을 이용한 방법입니다.

 

코딩은 여러가지 방법이 있어서 신기하고 재밌는거 같습니다 ㅎ

728x90
반응형