클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

반복문과 배열 그리고 예외 처리 6 - while 문 실습 1 : 기본문제 풀기 본문

프로그래밍 언어/자바

반복문과 배열 그리고 예외 처리 6 - while 문 실습 1 : 기본문제 풀기

huenuri 2024. 8. 11. 13:41

for문에 이어 while문 실습을 해볼 것이다. 이 문제는 다 풀지 못하고 예배를 드리러 가야 할 수도 있다. 그래도 하는데까지 해보자! while 문은 for 문보다 훨씬 어렵게 느껴지는데 여기에 관련된 실습 문제도 꽤 많다.


 

 

 

 

while 문

 

1. 특정 숫자를 입력하면 반복 종료 1 : 즉시 종료

 

 

문제를 잘 풀었다. 하지만 cnt라는 변수에서 왜 노란줄이 뜨는지 잘 모르겠다. 잘못된 부분은 없지만 필요없는 변수라서 경고 표시가 나온 것 같다.


 

 

 

코드 수정하기

 

cnt는 있을 필요가 없다. num으로도 while문 안에서 반복이 계속 되기 때문이다. 이 변수가 필요한 경우는 프로그램이 종료되었다는 문구가 뜬 이후에 계속해서 입력문을 받을 때 필요할 것 같다.


 

 

 

 

2. 특정 숫자를 입력하면 반복 종료 2 : 한번 더 입력 받기

 

 

이 문제는 7을 입력 받으면 바로 종료되지 않고 한 번 더 입력할 수 있도록 만들어졌다. 왜냐하면 while문이 2개이기 때문이다. 여기서도 num++이라는 코드가 있지만 이건 생략해도 가능한 거였다.


 

 

 

 

 

3. 10보다 큰 수를 입력하면 종료되도록

 

break 문을 if문 밖에 쓰면 정수 입력이 하나밖에 나오지 않는다. 그리고 안에 쓰면 계속해서 입력하라는 문구가 뜬다. 어떻게 해결할 수 있을까?


 

 

 

 

 

이제 잘 출력이 되고 있다. break의 위치도 중요하다는 걸 알게 되었다. if문에는 break를 원래 쓰지 않는 건줄 알았는데 그건 아닌 모양이다.


 

 

 

 

4. -1을 입력하면 종료하는 프로그램

 

 

 

처음에는 짝수와 홀수 개수를 따로 입력해서 출력하는줄 알았는데 저절로 계산하는 거였다. 조건문을 사용하면 된다. 이때 어떤 경우든 한번은 출력이 되어야 하므로 do-while 문을 사용했다.


 

 

 

 

5. -1이 입력될 때까지 입력한 수의 평균 구하기

이 문제는 책에 나온 예제인데 비슷한 문제이므로 함께 묶어서 풀어보기로 했다.

 

 

정답은 보지 않고 거의 모든 걸 스스로 풀어보았다. 이 정도까지 풀 수 있다는데 참 놀라웠다. 얼마 전까지만 해도 어제까지만 해도 이렇게 잘 할 수 있으리라 생각하지 못했다.

난 평균 변수를 하나 만들어서 저장해주었지만 책에는 그냥 바로 써주었다. 근데 이 방법이 더 좋은 것 같다. 그리고 책에서는 정수를 2번 받도록 되어 있는데 그건 불필요한 코드인 것 같다. 이렇게 코드를 볼 수 있는 눈도 생긴 것이다.


 

 

 

학습을 마치고

마지막 문제는 외출하고 와서 풀어보았다. 이 다음 문제부터는 무척 어려운 문제들이 있는데 그 문제들도 풀 수 있을거라 기대해본다. 지난번에 학습할 때는 그냥 내용을 숙지하는데 중점을 두고 혼자서 풀어보지는 못했던 문제들이 많았다. 하지만 두번째 학습을 해보니 전보다 알게 되는 것들이 참 많다.