makeMultiplesOfDigit2
두 수를 입력받아 두 수를 포함해 두 수 사이의 수 중 2의 배수의 개수를 리턴하기
두 수(num1, num2)는 양의 정수(int)
Pair)
1. 2의 배수의 개수를 카운트할 count 변수를 선언하고 초기값을 0으로 준다.
int count = 0;
2. num1==num2 이면서 짝수이고, 0이 아닌 경우 count는 1이다.
if(num1==num2 && num1 % 2 == 0 && num1 != 0){
count = 1;
}
3. num1>num2일 때 (for문) 둘 중 작은 수(num2)부터 큰 수(num1)까지의 값을 1씩 증가시키면서 (if문) 2의 배수라면 count를 1씩 증가시킨다. (num2가 0인 경우는 제외한다)
else if(num1>num2){
for(int i=num2; i<=num1; i++){
if(i%2==0 && i!=0){
count++;
}
}
}
3. num2>num1인 경우를 2와 같은 방법으로 연산한다.
else if(num2>num1){
for(int i=num1; i<=num2; i++){
if(i%2==0 && i!=0){
count++;
}
}
}
4. count를 리턴한다.
return count;
결과적으로 코드는 작동한다. 하지만 잘라서 보기에도 복잡한 감이 있다. if문 안에 for문 안에 if문,,,, 근데 그게 심지어 두개?
개선 방안
1. num1, num2 를 받을 변수를 새로 선언하고 임의로 start, end로 대소를 정한다. 반대의 경우 start, end에 들어갈 값을 바꾸어준다.
int start = num1;
int end = num2;
if(num1>num2){
start = num2;
end = num1;
}
2. 위와 같은 방식으로 for문을 작성한다.
for(int i=start; i<=end; i++){
if(i%2==0){
count++;
}
}
이 방법으로 if-for-if 구조로 작성됐던 코드를 한개의 if문과 for-if문으로 나누어 작성할 수 있다. (+작은 수로 0을 입력받는 경우를 위한 예외처리를 작성한다)
'diary > codestates (be39)' 카테고리의 다른 글
05/06/22 java 조건문과 반복문 후기 (0) | 2022.05.07 |
---|---|
05/06/22 [pair: java: 반복문: 3] 소수를 판별하는 여러가지 방법 (0) | 2022.05.07 |
05/06/22 [pair: java: 반복문: 1] /와 % 연산자는 소중해,, (0) | 2022.05.06 |
05/06/22 [pair: java: 조건문] there is jam (0) | 2022.05.06 |
05/04/22 [2/2] [pair: java: 변수, 타입, 문자열] 갑분 메서드요? (0) | 2022.05.05 |