Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc1 - 스프링 mvc
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch3
- jpa - 객체지향 쿼리 언어
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch11
- 자바 기본편 - 다형성
- @Aspect
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch13
- 스프링 입문(무료)
- 자바의 정석 기초편 ch9
- 2024 정보처리기사 시나공 필기
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch2
- 게시글 목록 api
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch1
- 스프링 mvc1 - 서블릿
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch6
- 스프링 mvc2 - 검증
- 스프링 mvc2 - 타임리프
- 스프링 db2 - 데이터 접근 기술
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch4 - 9 ~ 12[switch문, 임의의 정수 만들기] 본문
1) switch문
- 처리해야하는 경우의 수가 많을 때 유용한 조건문
- if-else if문과 비슷하지만 더 간단한 코드로 조건문을 작성할 수 있음
- switch 문은 항상 if-else if문으로 바꿀 수 있지만 if-else if문은 항상 switch문으로 바꿀 수 있는 것은 아님
- switch의 제약조건에 걸리지 않고 경우의 수가 많은 if-else if문을 switch문으로 변경하는 것을 검토 진행
(1) 동작 방식
- 조건식을 계산 -> 정수나 문자열 (true, false가 아님)
- 조건식의 결과와 일치하는 case문으로 이동
- 문장실행
- break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나감
- break문을 빠트렸을 경우 다른 break문을 만나거나 switch문을 끝까지 실행한 경우 빠져나감
- break문을 일부로 뺄 수도 있지만 실수로 빠트리는 경우가 훨씬 많음
- default문은 switch문의 가장 마지막에 위치하는 경우가 많아 break문을 제외함
- default문은 if-else if문의 else문처럼 생략이 가능
switch (조건식) {
case 값1 :
// 조건식의 결과가 값1과 같을 경우 수행될 문장들
// ...
break; // switch문 아웃
case 값2 :
// 조건식의 결과가 값2과 같을 경우 수행될 문장들
// ...
break; // switch문 아웃
// ...
default :
// 조건식의 결과와 일치하는 case문이 없을 때 수행 될 문장들
// ...
}
(2) switch문의 제약조건
- switch문의 조건식 결과는 정수 or 문자열(jdk1.7 부터 허용)이어야 함
- case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며 중복되지 않아야 함 -> 변수가 안됨
public static void main(String[] args) {
int num, result;
final int ONE = 1;
...
switch(result) {
case '1': // OK. 문자 리터럴(정수 49와 동일)
case ONE: // OK. 정수 상수
case "YES": // OK. 문자열 리터럴. JDK 1.7부터 허용
case num: // 에러. 변수는 불가
case 1.0: // 에러. 실수도 불가
...
}
(3) 예제
import java.util.Scanner;
public class ex4_6 {
public static void main(String[] args) {
System.out.print("현재 월을 입력하세요.>");
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 month에 저장
switch(month) {
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;
case 12: case 1: case 2:
// default: // default를 사용해도 되지만 case에 해당하지 않는 모든 값이 적용됨
System.out.println("현재의 계절은 겨울입니다.");
}
} //main의끝
}
2) 임의의 정수 만들기(난수) - Math.random()
- 게임이나 랜덤으로 섞을때 사용
- Math.random(): 0.0부터 1.0미만의 임의의 double값을 반환
- 0.0 <= Math.random() < 1.0, (0.0 ~ 0.9999999999....)
(1) 사용 방법
- 설정하고자 하는 범위의 값을 곱함 -> 5미만의 값을 랜덤으로 원할 경우 Math.random()*5
- 원하는 타입으로 변환 -> 정수를 원할 경우 (Int)(Math.random())
- 원하는 값이 나올 수 있도록 + , - 를 사용하여 적용 -> Math.random()*5+1
(2) 예제
public class ex4_7 {
public static void main(String[] args) {
// 괄호 {} 안의 내용을 20번 반복.
// Quiz 1) 1~10사이의 난수를 20개 출력
// 1,2,3,4,5,6,7,8,9,10 = 10개
for(int i = 1; i <= 20; i++) {
// System.out.println(Math.random()); // 0.0 <= x < 1.0
// System.out.println(Math.random()*10); // 0.0 <= x < 10.0
// System.out.println((int)(Math.random()*10)); // 0 <= x < 9
System.out.println((int)(Math.random()*10)+1); // 1 <= x <= 10
// Quiz 2) -5~5사이의 난수를 20개 출력
// -5,-4,-3,-2,-1,0,1,2,3,4,5,6 = 11개
System.out.println((int)(Math.random()*10)-5); // -5 <= x < 6
// Quiz 3) -3~6사이의 난수를 20개 출력
System.out.println((int)(Math.random()*10)-3);
// Quiz 4) 4~9사이의 난수를 20개 출력
System.out.println((int)(Math.random()*6)+4);
}
}
}
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch4 - 16 ~ 19 [while문, do-while문] (0) | 2023.11.07 |
---|---|
자바의 정석 기초편 ch4 - 13 ~ 15 [for문, 중첩for문] (0) | 2023.11.07 |
자바의 정석 기초편 ch4 - 1 ~ 8[조건문과 반복문, If문,if-else문,if-esle if문, 중첩if문] (0) | 2023.11.06 |
자바의 정석 기초편 ch3 - 15 ~ 19[논리연산자,논리부정연산자,조건연산자,대입연산자] (0) | 2023.11.05 |
자바의 정석 기초편 ch3 - 9 ~ 14[사칙연산자, 산술변환 반올림 Math.round(), 나머지 연산자, 비교연산자, 문자열의 비교] (0) | 2023.11.05 |