[Java]Switch변수가 유리할 때

예나·2025년 1월 2일

logicstudy

목록 보기
1/3

반복문에서 한번 실행할때마다 "스위치"처럼 왔다갔다 반복할 때에는 스위치 변수를 사용하는것이 유리하다. 그렇지않으면 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);
      
profile
안녕하세요

0개의 댓글