본문 바로가기
그 외 프로그래밍 언어/Java

자바 반복문, while문과 do-while문 실습

by Dreaming Coder 2021. 11. 27. 14:21

 


 

이번에는 자바의 반복문(while문과 do-while문)을 이용해서 간단한 산수 게임을 만들어보겠습니다.

 

 

 

지난 포스트

 

자바, 랜덤으로 숫자를 입력받는 코드

랜덤으로 숫자를 발생시키는 코드를 배워보도록 하겠습니다. 그동안 항상 써왔던 스캐너와 비슷합니다. 지난 포스트 이클립스, 클래스 이름 파일명 바꾸기 계속 자바에 대한 글만 올리다가 오

gogogameboy.tistory.com

 

 

 

do-while문 실습

 

랜덤으로 정수 2개를 뽑아 위와 같이 더하기 문제가 출력이 되면 사용자는 두 수의 합을 입력,

두 수의 합과 입력한 수가 일치하면 "Success", 두 수의 합과 입력한 수가 일치하지 않으면 "Fail"을 출력하는 프로그램입니다.

사용자가 게임을 계속 원하면 반복하고, 끝내길 원할 때 끝내는 코드를 짜봅시다.

 

 

 

위의 소스 코드는 PC에서 드래그 후,
ctrl+x로 잘라내서 다른 곳으로 붙여넣기가 가능합니다.
ctrl+c(복사)는 불가능합니다.

 

 

 

위의 코드는 지난 포스트인 랜덤으로 숫자를 입력받는 코드를 배우면서 올렸던 코드와 똑같습니다.

지금까지 배웠던 모든 것들을 상기시키면서 위에서부터 아래로 코드를 한 줄씩 보고 해석해보면 충분히 이해할 수 있으실 거라 생각합니다.

 

 

 

 

while문 실습

 

위에서 했던 것과 거의 똑같은 더하기 게임 프로그램입니다.

추가된 내용은, Fail 후 계속하기를 선택할 시에는 기존의 문제를 출력, Success 후 계속하기를 선택할 시에는 새로운 문제를 출력하도록 해보겠습니다.

 

 

 

위의 소스 코드는 PC에서 드래그 후,
ctrl+x로 잘라내서 다른 곳으로 붙여넣기가 가능합니다.
ctrl+c(복사)는 불가능합니다.

 

 

 

이번에는 문제를 틀린 후에 계속하기를 선택할 시에는 기존의 틀렸던 문제를 출력하고, 맞춘 후에 계속하기를 선택할 시에는 새로운 문제를 출력하도록 하는 것이 포인트입니다.

 

그래서 일단 while문으로 들어가기 이전에 랜덤인 두 수를 입력받도록 합니다.

그리고 while문 안에서 불리언boolean 데이터 타입의 equal이라는 이름의 변수를 만들어줍니다.

 

 

 

if (sum == input_num) {
System.out.println("Success");
equal = true;
}else{
System.out.println("Fail");
equal = false;
}

 

그리고 while문 안에 위와 같은 if-else 조건문이 들어가 있습니다.

랜덤인 두 수의 합인 변수 sum과 사용자에게 입력받은 변수 input_num이 같을 시에 (즉, 정답일 경우에)

Success라는 문장을 출력하고 equal 변수에는 true 값을 넣게 됩니다.

반대로 문제를 틀렸을 시에는 Fail을 출력하고 equal 변수에는 false 값을 넣게 됩니다.

계속해서 아래의 코드들을 살펴봅시다.

 

 

 

System.out.print("계속 하시겠습니까? [y] Yes [n] No ");

String next = sc.next();

if (next.equals("y")) {

// 맞았다면 숫자를 갱신

if (equal) {

random_num1 = rd.nextInt(20);

random_num2 = rd.nextInt(20);

}else {

// 틀렸다면 기존 숫자 그대로 따라서 랜덤수 갱신 X

} }else {

break;

}

 

계속하겠냐는 질문을 출력하고, 입력받을 값을 숫자가 아닌 문자인 y와 n으로 지정을 했습니다.

문자를 입력받아야 하니 데이터 타입은 int가 아닌 String으로 지정을 했고,

if문의 ( ) 괄호 안의 조건식도 지금까지와는 조금 다른 형태의 조건식이 나왔습니다.

스캐너로 입력받은 문자가 y일 경우에는 if문 안의 코드를 실행하고,

y가 아닌 다른 문자를 입력받았을 시에는 else 안의 break; 코드에 의해서 게임은 종료가 됩니다.

위의 코드는 보시다시피 if문 안에 또 if문이 들어간 이중 if문입니다.

이제 마지막으로 if문 안에 있는 if문을 확인해보도록 하겠습니다.

 

 

 

if (equal) {

random_num1 = rd.nextInt(20);

random_num2 = rd.nextInt(20);

}else {

// 틀렸다면 기존 숫자 그대로 따라서 랜덤수 갱신 X

}

 

if문의 ( ) 안의 조건식에 equal이라는 변수명만 들어가 있습니다.

아까 위에서 문제를 맞히면 equal 변수에는 true 들어가고, 틀리면 false가 들어간다고 했었습니다.

그러니 위의 조건문은 문제를 맞힌 사람이 계속해서 게임을 하겠다고 y를 선택하면 랜덤인 두 수를 다시 새로 출력받아서 새로운 문제가 출제되는 것이고, 문제를 틀렸던 사람이 게임을 계속한다면 아까 틀렸던 문제가 다시 출력이 되게 되는 것입니다.

 

 

 

 

 

 

다음 포스트

 

자바, 반복문 for문

반복문 중에 마지막으로 배울 for문을 배워보도록 하겠습니다. 지난 포스트 자바 반복문, while문과 do-while문 실습 이번에는 자바의 반복문(while문과 do-while문)을 이용해서 간단한 산수 게임을 만들

gogogameboy.tistory.com

 

 

 


이 글이 도움이 됐다면 하단의 공감 버튼을 꾹 눌러서
빨간 하트로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.

 


 


댓글