day8

상은👸·2023년 9월 7일
0

뚜벅뚜벅 첫번째

목록 보기
7/26
post-thumbnail

단축키

들여쓰기 자동정렬
=>전체 선택 -> 자동정렬
=>Ctrl+A -> Ctrl+I

주석
Ctrl+Shift+C

연습문제 1

1번. 아래 코드를 if문으로 변경

int diceNum = 3; //주사위 수 1~6
switch(diceNum) {
case 1: // diceNum == 1
	System.out.println("1");
	break;
case 2:
	System.out.println("2");
	break;
case 3:
	System.out.println("3");
case 4:
	System.out.println("4");
case 5:
	System.out.println("5");
	break;
default:
	System.out.println("6");
	//case 6:
}

=

if (diceNum == 1) {
	System.out.println("1");
} else if (diceNum == 2) {
	System.out.println("2");
} else if (diceNum == 3) {
	System.out.println("3");
    System.out.println("4");
    System.out.println("5");
} else if (diceNum == 4) {
	System.out.println("4");
    System.out.println("5");
} else if (diceNum == 5) {
	System.out.println("5");
} else {
	System.out.println("6");
}

=> 1과 2에는 break가 있으므로 그 값만 나오게 하고
=> 3과 4에는 break가 없으니까 345 45가 쭉 나올거란말이야 그래서 3과 4일 경우에는 345 45가 출력되도록 System.out.println();를 쭉 적어주고
=> 5일 경우에는 break가 있으니까 5만 나오게 하고
=> 위에 default는 12345 이외의 숫자는 다 6이 나오게끔 하는 것!!

연습문제 2

2번. 아래 코드를 swtich 문으로 변경

String localNum = "031";

if ( localNum.equals("031") ){
System.out.println("경기도입니다");
}
if ( localNum.equals("02") ){
System.out.println("서울입니다.");
}
if ( localNum.equals("041") ){
System.out.println("충남입니다");
}
if ( localNum.equals("051") ){
System.out.println("부산입니다");
}

=

switch (localNum) {
case "031":
	System.out.println("경기도입니다");
   	break;
case "02":
	System.out.println("서울입니다");
    break;
case "041":
	System.out.println("충남입니다");
    break;
case "051":
	System.out.println("부산입니다");
    break;
}

※ 주의!!!!!!
① default는 쓰지않는다! 왜냐면 다른값이 나와서 부산입니다 나오면 안되잖아!

② localNum은 String 문자열 이니까 case 지정해줄때 "" 안에 넣어서 표현한다!

연습문제 3

3번. 아래 코드를 switch 문으로 변경
*** switch 문은 범위를 지정할 수 없습니다.
결과값만 동일하게 나오도록 만들어보세요.

int score = 79;
if(score >= 90) {
System.out.println("학점 A");
} else if (score >= 80) {
System.out.println("학점 B");
} else if (score >= 70) {
System.out.println("학점 C");
} else if (score < 70) {
System.out.println("학점 F");
}
		

=

switch (score/10) {
case 10 :
case 9:
	System.out.println("학점 A");
    break;
case 8:
	System.out.println("학점 B");
    break;
case 7:
	System.out.println("학점 C");
    break;
default :
	System.out.println("학점 F");
}

=> 맨마지막 값에는 굳이 break; 안넣어도 된다!
어차피 끝나는거니까!!

=> 각각 100~90, 89~80, 79~70, 69~0 이렇게 범위가 지정되잖아?

=> 근데 score을 /(나누기)10 해보면 몫이 100점부터 따지면 10 9 8 7 6 이 나오게 되잖아!

=> 그래서 score/10 으로 기준을 잡고 !

=> case10 9 8 7 6으로 잡아서 학점 나오게 하면된다!!

=> 맨 마지막 default는 6으로 지정하면 안되지 ㅠ 이제 위에 나온 이외의 값이 다 F로 나오게 해야하니까!!!

※ 리팩토링!
case 10 :
System.out.println("학점 A");
break;

case 9:
System.out.println("학점 A");
break;
이거보다는
case 10 :
case 9:
System.out.println("학점 A");
break;

이렇게 써서 중복 제거!

연습문제 4

어휴... 자괴감에 빠져들었다..ㅎㅋㅋ

3번.
☞ 연도가 4로 나누어 떨어지면 윤년이다. ex) 2020년, 2024년, 2028년, ...
☞ 연도가 100으로 나누어 떨어지면 윤년이 아니다. ex) 2100년, 2200년, 2300년, ...
☞ 연도가 400으로 나누어 떨어지면 윤년이다. ex) 2000년, 2400년, 2800년, ...
예를 들면 2000년은 100의 배수이지만 400으로 나누어 떨어지기 때문에 윤년이다.
년도를 입력받아서 윤년인지 아닌지의 여부를 출력하세요.

2000 윤년 2001 윤년X 2004 윤년 2020 윤년 2023 윤년X 2100 윤년X 2300 X 2400 O

//우선순위 => 4 < 100 < 400

Scanner scan = new Scanner(System.in);
System.out.print("연도를 입력하세요 : ");
int year = scan.nextInt();
if (year % 4 == 0) { //윤년
	if (year % 400 == 0) { // 4 o 400 o
    	System.out.println("윤년");
    } else {// 100 남음
    	if (year % 100 == 0) {
        	System.out.println("윤년X");
        } else {
        	System.out.println("윤년");
        }
    }
 
} else {
	System.out.println("윤년X");
}

=> 먼저 되는 경우를 나열해보자 4는 무조건 되야함 그래서 4부터 쓰고 안되는 경우 else 쓰고

=> 그 다음 if절 안에 if 조건을 한번 더 줘서 되는경우인 400을 쓰고 else 쓴다

=> 400 else절안에 안되는경우인 100을 쓰고 else 쓰고...

※ 또 다른 방법,,

Scanner scan = new Scanner(System.in);
System.out.print("연도를 입력하세요 : ");
int year = scan.nextInt();
if (year % 400 == 0) {
	System.out.println("윤년");
} else if (year % 100 == 0) {
	System.out.println("윤년X");
} else if (year % 4 == 0) {
	System.out.println("윤년");
} else {
	System.out.println("윤년X");
}

=> 예를 들면 2000년은 100의 배수이지만 400으로 나누어 떨어지기 때문에 윤년이다. -> 여기서 보면 400을 먼저 따져봐야 한다는 소리!
그래서 400으로 나누어떨어지는지 먼저 확인해보고

=> if (year % 400 == 0) 이 조건식이 거짓이면 밑으로 내려와서 100으로 나누어떨어지는지 확인하고
(여기서 나누어떨어지면 윤년X)

=> else if (year % 100 == 0) 조건식이 거짓이면 밑으로 내려와서 4로 나누어 떨어지는지 확인,,

반복문

반복문의 종류 => for, while, do-while

1. for

for( (최초)초기화 ; ①조건식 ; ③증감 ) {
②실행 코드
}

=> 순서가 어떻게 되냐면

* 한번만 초기화
① 조건식
② 실행코드
③ 증감

(예시)

for(int i=1; i<=5; i++) { 
	System.out.println("망치질을 한다.");
}

=> 최초 i=1
① 1<=5 ②망치질을 한다 ③i++ = 2
2<=5 망치질을 한다 i++ = 3
3<=5 망치질을 한다 i++ = 4
4<=5 망치질을 한다 i++ = 5
5<=5 망치질을 한다 i++ = 6
6<=5 --> 빠져나간다

=> 출력 :
망치질을 한다
망치질을 한다
망치질을 한다
망치질을 한다
망치질을 한다

연습문제

1~10까지의 합을 계산해서 출력하시오!

//영향이 가지않는 값으로 초기화시켜준다
// 덧셈 : 변수 = 0;
// 곱셈 : 변수 = 1;

=>

int sum = 0;
for (int i=1; i<=10; i++) {
	sum = sum + i
    System.out.println(sum);
}

※ 주의!
저렇게 {} 안에 System.out.println(sum); 을 쓰게되면 1+2+3+4+5...10의 누적된 값이 다들어간다!

int sum = 0;
for (int i=1; i<=10; i++) {
	sum = sum + i
}
System.out.println(sum);

그래서 {} 밖으로 System.out.println(sum); 을 쓰면 그냥 1+2+3+4+5...10의 최종결과값만 나오게 된다!

profile
뒤죽박죽 벨로그

0개의 댓글

관련 채용 정보