
반복문에서 한번 실행할때마다 "스위치"처럼 왔다갔다 반복할 때에는 스위치 변수를 사용하는것이 유리하다. 그렇지않으면 if-else로 구문이 길어질 뿐 아니라 반복문에서 중복이 생기기 때문이다.
// 문제1] 1-2+3-4+5-6+7-8+9-10=-5
// 홀수- sum += i
// 짝수+ sum -= i
안좋은 예) 내가 처음으로 코딩한 방법이다.
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 1) {
System.out.printf("%d-", i);
sum += i;
} else {
System.out.printf("%d+", i);
sum -= i;
}
} // for
System.out.printf("\b=%d\n", sum);
수정 1단계)
int sum=0;
boolean sw = false;
for(int i=1;i<=10;i++) {
if(sw==false) {
System.out.printf("%d-",i);
sum+=i;
sw=true;
}else {
System.out.printf("%d+",i);
sum-=i;
sw=false;
}
}
System.out.printf("\b=%d\n",sum);
수정 2단계)
int sum=0;
boolean sw = false;
for(int i=1;i<=10;i++) {
if(!sw) {
System.out.printf("%d-",i);
sum+=i;
}else {
System.out.printf("%d+",i);
sum-=i;
}
sw = !sw;
}
System.out.printf("\b=%d\n",sum);
최종)
int sum = 0;
boolean sw = false;
for (int i = 1; i <= 10; i++) {
System.out.printf(sw ? "%d+": "%d-", i);
sum += sw?-i:+i ;
sw = !sw;
} // for
System.out.printf("\b=%d\n", sum);_
// 문제2] (1/2)-(2/3)+(3/4)-(4/5)+....-(8/9)=??
double sum = 0;
boolean sw = false;
// 분자i
for (int i = 1; i <= 8; i++) {
System.out.printf("%d/%d" + (sw ?"+":"-"),i,i+1);
if(!sw) {
sum +=(double) i/(i+1);
}else {
sum -=(double)i/(i+1);
}
sw = !sw;
} // for
System.out.printf("\b=%f\n",sum);