본문 바로가기
👨‍💻 2. 웹개발_Back end/2-1 Java

[JAVA] 04-1 조건문 (if문, switch문)

by 달님🌙 2021. 7. 27.
반응형
If문

- 삼항연산자랑 완전히 똑같다

// 조건이 두 개 일때
int score = 95;
char grade;	

// if문
if(score > 90) {
	grade = 'A';
} else {
	grade = 'B';
}
System.out.println(grade); // A

// 삼항연산자
grade = (score>90) ? 'A' :'B';
System.out.println(grade); // A

- if문 내부 코드가 한 줄이어도 중괄호 { } 생략하지 않는다.

- 물론 중괄호 { } 를 생략해도 컴파일하는데는 아무 문제가 없음

- 하지만 코드가 복잡해질수록 괄호로 안묶여있다면 착각할 수 있음

- 따라서 항상 Scope(범위)를 만들어서 실행한다

 

조건이 세 개 일때
// if문
int score1 = 85;

if(score1 > 90) {
	grade = 'A';
} else {
	if(score1 > 80) {
		grade = 'B';
	}
	else {
		grade = 'C';
	}
} System.out.println(grade); // B

// 삼항 연산자
grade = (score1>90) ? 'A' : ((score1>80) ? 'B' : 'C');
System.out.println(grade); // B

 

 

else if 문
int score2 = 75;
char grade2;

if (score2 > 90) {
 grade2 = 'A';
} else if(score2 >= 80 && score2 < 90) {
 grade2 = 'B';
} else if(score2 >= 70 && score2 <80) {
 grade2 = 'C';
} else if(score2 >= 60 && score2 < 70) {
 grade2 = 'D';
} else {
 grade2 = 'F';
} System.out.println(grade2); // C

- else if 문 사용시 확률상 가능성이 높은 조건을 위로 배치한다.(현업 지침서 참고)

- 그러나 가시적인 구조를 더 선호함(예를 들어, D등급 학생들이 많다고해서 D를 A보다 먼저 배치하지는 않음)

- else if 문 사용시 else 문도 꼭 사용해주어야함 

- 조건이 점점 많아질수록 if문은 불편할 수 밖에 없다 -> Switch문의 필요성

 

if - else if - else 문
int score = 75;
if (score >= 90) {
  System.out.println("점수가 90~100입니다.");
  System.out.println("등급은 A입니다.");
} else if (score >=80) {
  System.out.println("점수가 80~89입니다.");
  System.out.println("등급은 B입니다.");
} else if (score >=70) {
  System.out.println("점수가 70~79입니다."); 
  System.out.println("등급은 C입니다.");
} else {
  System.out.println("점수가 70 미만입니다."); 
  System.out.println("등급은 D입니다.");
}

 

random 함수

- String 타입에 들어가보면 변수도 나오고 어떠한 기능들을 수행하는 함수들도 나온다

 

- 마찬가지로 Math 라는 클래스안에는 많은 메소드들이 들어있는 것을 알 수 있다.

- 그 중에 random() 이라는 이름을 가진, 어떤 수를 임의로 뽑아내는 기능을 하는 메소드가 있다.

- random() : double 을 통해 기본 디폴트 타입은 double로 설정되어있는걸 알 수 있음

- 전부 다 외울 필요없이 까먹었을때마다 Math . 찍고 > Enter > 리스트를 참고하여  확인할 수 있다

 

** 주사위의 1~6 번호 뽑기 예제

System.out.println(Math.random()); // 0~1 사이의 실수를 무작위로 꺼냄

int number= (int) (10 * (Math.random()));
System.out.println(number); // 0~9 사이의 자연수(10개)중 하나를 무작위로 꺼냄

// 0~9까지의 수 를 무작위로 뽑기
System.out.println((int)(Math.random()*10));

// 1~10까지의 수 를 무작위로 뽑기
System.out.println((int)(Math.random()*10 + 1));

// 1~100까지의 수 를 무작위로 뽑기
System.out.println((int)(Math.random()*100 + 1)); // 곱해지는 수 만큼의 개수 중에서 뽑게됨

//주사위 던지기 (1~6 사이의 정수)
System.out.println((int)(Math.random()*6 + 1));

int num = (int) (Math.random() *6 + 1);
if (num==1) {
	System.out.println("1번이 나왔습니다.");
} else if (num==2) {
	System.out.println("2번이 나왔습니다.");
} else if (num==3) {
	System.out.println("3번이 나왔습니다.");
} else if (num==4) {
	System.out.println("4번이 나왔습니다.");
} else if (num==5) {
	System.out.println("5번이 나왔습니다.");
} else {
	System.out.println("6번이 나왔습니다.");
}

 

switch문

- 어떤 조건문을 switch문으로 표현 가능하다면 반드시 if문 대신 switch문을 써야한다

- switch문이 효율이 더 뛰어나기 때문.

- if 문은 분기로 나눌 때, switch 문은 변수로 나눌때 사용?

- switch문은 예제를 몇 개 외워두도록 하자

 

break
int score = 85;
char grade;
switch(score) {
  case 100 : 
  case 99 : 
  case 85 :
  grade = 'A';
  break;
  
  case 89 : 
  case 88 :
  grade = 'B';
}

- case 마다 break를 해주는게 아니라 우리가 원하는 곳만 break를 선언해줌

- 여러 case를 쭉 통과시키도록 하기위해서는 군데 군데만 break를 써줌

 

** switch문 계절 예제

int month = 3;
switch(month) {
  case 12:
  case 1:
  case 2:
  System.out.println("겨울입니다.");
  break;
  
  case 3:
  case 4:
  case 5:
  System.out.println("겨울입니다.");
  break;
  
  case 6:
  case 7:
  case 8:
  System.out.println("겨울입니다.");
  break;
  
  case 9:
  case 10:
  case 11:
  System.out.println("겨울입니다.");
  break;
}

 

 

자바에서 전구 표시

 

- The value of the local variable grade is not used 

- 경고 표시임 (컴파일하는데 문제없음)

-  하지만 print문이 선언되지않아 결과가 출력되지않는다.

 

 

 

 

 

반응형

댓글