inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이1

while문 문제와 풀이 질문입니다(짝수 출력)

509

Ant

작성한 질문수 2

0

 IMG_0192.jpeg안녕하세요~

이렇게 코드를 짜면 값이 안나오는데 왜일까요?

num을 1로 했더니 결과가 안나와서 찾아보니

int가 정수 라서 실행이 안된다길래

int를 2로 잡고 돌렸는데도 값이 2만 나옵니다.

뭐가 문제인가요?

 

그리고 코드를 이렇게 짰는데

값은 강의 내용과 동일하게 나옵니다.

강의에서는 num과 count 두 변수를 이용하던데

이유가 있나요?

IMG_0193.jpeg

코딩 강의 처음 들어보는 초보자라

왕초보 기준으로 설명해주실 수 있을까요😔

java 객체지향

답변 2

1

OMG

안녕하세요. knjou92님, 공식 서포터즈 OMG입니다.

 

while문은 while() 괄호 사이의 조건을 만족했을 때만 { } 안의 구문이 실행됩니다.

num을 1로 했을 때 결과가 나오지 않았다면 while()괄호 사이의 조건을 만족하지 못하여 실행되지 않았다는 사고로 문제를 접근해야합니다.

 

while문의 () 조건을 살펴보면 다음과 같은 두개의 조건이 만족했을 때만 실행되는 조건임을 확인할 수 있습니다.

 

(조건 1)

num은 20과 같거나 작으면서 (num <= 20)

 

(조건 2)

num을 2로 나눴을 때 나머지가 0인 경우 (= 2, 4, 6, 8 ....) => 짝수죠? (num % 2 == 0)

즉, while문의 조건을 만족하는 숫자를 나열하면 (2, 4, 6, 8, 10, 12, 14, 16, 18, 20) 입니다.

(0 과 0보다 작은 정수는 일단 제외하고 생각하세요)

 

(결론)

num이 1 인경우 조건1 을 만족하지만, 조건2를 만족하지 못하여 while()문 안의 구문이 실행되지 않아 값이 출력되지 않았습니다.

 


 

강의에서는 num과 count 두 변수를 이용하던데

이유가 있나요?

image

문제를 보시면 갯수 제한을 10개로 두어 출력하는 프로그램을 작성하라고 되어 있습니다.

문제가 단순하고 숫자가 큰 범위의 숫자가 아니기에 강의에서와 같이 암산으로도 충분히 count변수를 사용하지 않더라도 짝수 10개를 출력하려는 범위의 숫자 조건을 20으로 계산할 수 있습니다.

knjou92님이 작성한 코드가 틀린 코드는 아니지만, 문제의 숫자가 암산의 범위를 넘어서는 숫자거나 계산식이 단순하지 않다면 우리는 문제를 해결하기 위한 데이터를 '변수'를 사용하여 정의하고 정의한 '변수'를 활용하여 문제를 해결합니다.

강의에서는 출력하려는 짝수의 갯수를 count변수로 정의하여 풀이한 것이고, knjou92님은 출력하려는 갯수를 정의한 count변수를 사용하지 않고 문제를 풀이한 것이니 풀이법의 차이가 있을 뿐 결과는 같게 나온 것입니다.

 

감사합니다.

1

OMG

num = 2 일 때 2만 출력된 이유

num이 2일 때는 조건1 조건2 를 모두 만족하여 { } 구문의 System.out.println(num++);이 실행되어 2를 출력하였습니다.

 

2가 출력되고 나서 num++ 로 인해 2는 값이 1 증가하여 3이되었습니다.

num이 3이 된 순간 while문의 ()의 조건2 (num % 2 == 0)을 만족하지 않아 실행되지 않은 것입니다.

 

 

1

pueblo

 

//num = 1 일 때,
int num = 1;
// 1%2 == 0 조건에 부합되지 않아 false
while (1 <= 20; && 1 % 2 == 0) {
System.out.Println(num++); // 당연히 실행 X
}
//num = 2 일 때,
int num = 2;
// 둘 다 조건에 부합되어 true 로 코드블록 실행
while (2 <= 20; && 2 % 2 == 0){
System.out.Println(num++); // 단 한번만 실행 why? num++ 하면 num=3 되어 조건식 false를 반환하므로 실행 x
} 

num = 1 일 때, while 조건식 (1 % 2 == 0) 이 fasle가 되어 && 비교연산자로 성립되지 않아 출력문이 실행되지 않습니다.

num =2 일 때, while 조건식은 둘 다 true 조건식이 일치해 실행되지만 num++ 하면 num=3 되어 조건식 false를 반환하므로 단 한번만 실행됩니다!

문제와 풀이4 문제점

0

49

2

문제풀이 시간마다 방향성

0

46

2

피라미드 문제 풀이

0

73

1

ScannerWhile3 예제 코드 질문

0

58

1

짝수 출력 문제 질문

0

53

1

Array 연습 문제 5번 질문입니다.

0

85

2

단축어가 이상하게 나옵니다

0

133

2

Sql강의

0

91

1

array 문제풀이 2번 질문입니다.

0

57

1

JAVA입문 / 메서드편 문제와 풀이2

0

48

1

인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요

1

816

3

OperationEx3에서 꼭 boolean을 써야 하나요?

0

63

1

for, while문 작성

0

66

1

68강 ArrayEx6 클래스 질문

0

61

1

IO.println(String.format("Hello and welcome!"));

0

153

2

소스코드 실행이 안돼요

0

120

2

메서드 문제와 풀이2에서 마지막 문제 이렇게 풀어도 괜찮은 건가요..?

0

80

1

While과 for 스코프 질문

0

64

1

김영한 java 입문 설치 질문

0

139

2

버퍼문제?

0

55

1

for문 피라미드 찍는거 질문

0

79

1

21버전이 없고, 강의 메뉴얼 확인해보면 된다는 김영한 선생님 답변 확인했습니다.

0

377

1

3번 문제 질문 있습니다.

0

100

2

sout에는 변수가 하나만 들어가야 하나요?

0

135

1