Language/Java
Java while문2
괘창
2024. 6. 28. 12:26
■ while 반복문
문제 : 1부터 하나씩 증가하는 수를 3번 더해라 (1 ~ 3더하기)
1부터 하나씩 증가하는 수이기 때문에 1 + 2 + 3 을 더해야 한다.
while 문 사용하지 않고 풀어보자.
문제 코드)
package loop;
public class While2_1 {
public static void main(String[] args) {
int sum = 0;
sum = sum + 1; // sum(0) + 1 > sum(1)
System.out.println("i = " + 1 + ", sum = " + sum);
sum = sum + 2; // sum(1) + 2 > sum(3)
System.out.println("i = " + 2 + ", sum = " + sum);
sum = sum + 3; // sum(3) + 3 > sum(6)
System.out.println("i = " + 3 + ", sum = " + sum);
}
}
실행 결과)

# 코드의 정답은 맞으나 개선할 점이 보이며, 변경에 유연하지 않다.
# 0부터 하나씩 증가하는 수를 3번 더해라 (10 ~ 12 더하기)로 요구사항이 변경될 경우
10 + 11 + 12 계산을 해야하나 코드를 너무 많이 변경해야 한다는 문제가 있다.
문제 :i 부터 하나씩 증가하는 수를 3번 더해라 (i ~ i + 2 더하기)
변수 = i
변수를 사용해서 더 변경하기 쉬운 코드로 만들자.
문제 코드)
package loop;
public class While2_2 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
sum = sum + i; //sum(0) + i(1) > sum(1)
System.out.println(" i = " + i + ", sum = " + sum);
i++; //i=2
sum = sum + i; //sum(1) + i(2) > sum(3)
System.out.println(" i = " + i + ", sum = " + sum);
i++; //i=3
sum = sum + i; //sum(3) + i(3) > sum(1)
System.out.println(" i = " + i + ", sum = " + sum);
}
}
실행 결과)

# 변수 i를 사용한 덕에 i의 값만 변경하면 나머지 코드는 변경하지 않아도 된다.
# i=10 으로 변경하면 다른 코드 변경 없이 10 + 11 + 12 문데도 바로 풀 수 있다.
※ 좋은 코드인지 아닌지는 변경 사항이 발생했을 때 알 수 있다. 변경사항 발생 시 변경 부분이 적을수록 좋은 코드!
새로운 변경사항 등장!
기존 문제 : i부터 하나씩 증가하는 수를 3번 더해라 ( i ~ i+2 더하기)
새로운 문제 : i 부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더해라 ( i ~ endNum 더하기)
● i = 1, endNum = 3 이면, 1 ~ 3 까지 총 3번 더해야한다.
● i = 1, endNum = 10 이면, 1 ~ 10 까지 총 10번 더해야한다.
● i = 10, endNum = 12 이면, 10 ~ 12 까지 총 3번 더해야한다.
i=1, endNum=3 으로 문제를 풀자
문제 코드)
package loop;
public class While2_3 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
int endNum = 3;
sum = sum + i;
System.out.println("i = " + i + ", sum = " + sum);
i++;
sum = sum + i;
System.out.println("i = " + i + ", sum = " + sum);
i++;
sum = sum + i;
System.out.println("i = " + i + ", sum = " + sum);
i++;
}
}
실행 결과)

# i = 1, endNum=3 이므로 다음 코드를 총 3번 반복해야 한다.
# i = 1, endNum=10 와 같이 변경하면 해당 코드를 총 10번 반복해야 하므로 코드를 더 많이 추가해야 한다.
# 이 문제를 제대로 풀기 위해서는 코드가 실행되는 횟수를 유연하게 변경할 수 있도록 해야한다.
while 문을 사용한 문제 코드)
package loop;
public class While2_4 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
int endNum = 10;
while (i <= endNum) {
sum = sum + i;
System.out.println("i=" + i + ", sum=" + sum);
i++;
}
}
}
실행 결과)
