A_001_반복 중 마지막 예외 처리

charl hi·2021년 8월 26일
0

Algorithm

목록 보기
1/5

예)
A - B - .... X - Y - Z

짝 지을 때

  • (가) 'A - ', 'B - ', 'C - ', ... 'Y - ', 'Z'

이런 식으로 마지막을 예외로 하면 힘들다. (X)

  • (나-1) 'A',
  • (나-2)' - B', ' - C', ... ' - Y', ' - Z'

✨✨처음을 예외로 처리 (O), 나머지는 반복으로 하자



Q1. 3항연산자를 이용해서 아래와같은 코드를 완성하시오.


정수를 입력하세요
5
0 + 1 + 2 + 3 + 4 + 5 = 15

첫번째 코드

import java.util.Scanner;

public class Sample07 {

	public static void main(String[] args) {

		System.out.println("정수를 입력하세요.");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int sum = 0;
		for(int i=0; i<=n; i++) {
			System.out.print(i);
			sum += i;
			if(i != n) {
				System.out.print(" + ");
			}
		}
		System.out.println(" = "+sum);
		scan.close();
	}

}
  • 이런 식으로 마지막을 예외로 처리했다.
  • 간단한 거면 몰라도, 복잡해지면 힘들다.
  • 그리고 삼항연산자 사용도 못했다.

두번째 코드

package Test01;

import java.util.Scanner;

public class Sample07_1 {

	public static void main(String[] args) {
		//0 + 1 + 2 + 3 + 4 + 5 = 합
		System.out.println("정수를 입력하세요.");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int sum = 0;
		for(int i=0; i<=n; i++) {
			if(i==0) {
				System.out.print(i);
			} else {
				System.out.print(" + "+i);
			}
			sum += i;
		}
		
		System.out.println(" = "+sum);
		scan.close();
	}

}
  • 처음을 예외로 처리하고 나머진 반복!
  • 그러나 여전히 삼항연산자를 사용 못했다.

세번째 코드

package Test01;

import java.util.Scanner;

public class Sample07_2 {
	
	public static void main(String[] args) {
		//0 + 1 + 2 + 3 + 4 + 5 = 합
		System.out.println("정수를 입력하세요.");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int sum = 0;
		String s = "";	
		//문자열로 만드는? 변수?? 삼항연산자를 사용하기 위해 변수가 필요하니까?
		for(int i=0; i<=n; i++) {
//			if(i==0) {
//				s += "" + i;	//어떤 타입이든 문자열과 +하면 문자열로 된다.
//			} else {
//				s += " + " + i;	//그걸 계속 +하기=결합하기
//			}
			s += (i==0)? ("" + i) : (" + " + i);
			sum += i;
		}
		
		System.out.println(s+" = "+sum);
		scan.close();
	}


}

  • 문자열 변수를 따로 만든 이유는 삼항연산자와 함께 사용할 수 있기 위함인 것 같으나 확실치 않다.
  • 솔직히 나 혼자선 떠올리지 못함 ㅎㅎ
  • 저렇게 문자열과 결합하는 방법이 있다는 걸 기억해두자.


Q2. 위와 같은 방법으로 짝수의 합을 출력하시오.

정수를입력하세요
5
0 + 2 + 4 = 6

첫번째 코드

package Test01;

import java.util.Scanner;

public class Sample08 {

	public static void main(String[] args) {
		/*
5
0 + 2 + 4 = 6
		 */
		System.out.println("정수를 입력하세요.");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int sum = 0;
		for(int i=0; i<=n; i++) {
			if(i%2==0) {
				System.out.print(i);				
				sum += i;
			} else if(i!=n) {
					System.out.print(" + ");
			}
		}
		System.out.println(" = "+sum);
		scan.close();



	}

}
  • 마찬가지로 마지막을 예외로 처리했다.
  • 2배수로 계산하기로 했는데, +2가 더 나은 것 같기도?

두번째 코드

package Test01;

import java.util.Scanner;

public class Sample08_1 {
	public static void main(String[] args) {

		System.out.println("정수를 입력하세요.");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int sum = 0;
		for(int i=0; i<=n; i+=2) {
			if(i==0) {
				System.out.print(i);
			} else {
				System.out.print(" + " + i);				
			} 
			sum += i;
		}
		System.out.println(" = "+sum);
		scan.close();



	}


}
  • 처음을 예외 처리로!
  • i += 2로 하니까 딱히 else if로 만들지 않아도 되고, sum의 위치를 고민할 필요도 없다!
  • 다음에 삼항연산자 도전

세번째 코드

package Test01;

import java.util.Scanner;

public class Sample08_2 {

	public static void main(String[] args) {
		//0. + 2. + 4. = .6
		Scanner scan = new Scanner(System.in);
		System.out.println("정수를 입력하시오.");
		int n = scan.nextInt();
		int sum = 0;
		String s = "";
		
//		for(int i=0; i<=n; i+=2) {
//			if(i == 0) {
//				s += "" + i;
//			} else {
//				s += " + " + i;
//			}
//			sum += i;
//		}
		for(int i=0; i<=n; i+=2) {
			s += (i == 0)? ("" + i) : (" + " + i);
			sum += i;
		}
		
		System.out.println(s+" = "+sum);
		scan.close();

	}

}

0개의 댓글

관련 채용 정보