9.제어문(control statement)
*[1]조건문-조건에 따라 다른 문장이 수행되도록 함
*[2]반복문-특정 문장들을 반복해서 수행하도록 함
9-1.조건문 (if, switch)
①if..문 =>만일 조건식이 참이면 괄호안의 문장들을 수행하라.
[기본형] |
if(조건식) { //조건식이 참일 때 수행될 문장 } |
[if-else문] |
if(조건식) { //조건식이 참일 때 수행될 문장 } else { //조건식이 거짓일 때 수행될 문장 } |
[if-else if문] |
if(조건식) { } else if(조건식) { //여러개의 else if사용 가능 } else { //else블럭 생략 가능 } |
[중첩 if문] |
if(조건식1) { if(조건식2) { //조건식 1과 2가 모두 true일 때 수행될 문장 } else { //조건식1 true, 조건식2 false } } else { //조건식1이 false일때 수행될 문장 } |
②switch문
(1)조건식을 먼저 계산한 후, 결과와 일치하는 case문으로 이동
(2)이동한 case문 아래에 있는 문장들을 수행
(3)break문을 만나면 전체 switch문 탈출
[기본형] |
swtich(조건식) { case값1 : // 조건식의 결과가 값1일 경우 수행될 문장 break; case값2: // 조건식의 결과가 값2일 경우 수행될 문장 break; default: // if문의 else블럭과 같은 역할 } |
*switch문의 조건식은 결과값이 정수 또는 문자열이어야 한다.
*case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며 중복되지 않아야
한다.
ex17.
switch(result) { case ’1’: //O, 문자 리터럴(=정수 49와 동일) case ONE: //O, 정수 상수 case “YES”: //O, 문자열 리터럴 case num: //X, 변수 불가 case 1.0: //X, 실수 불가 } |
9-2.반복문 (for, while, do-while)
①for문=>반복횟수를 알고 있을 때 사용
*기본 구조:
for(초기화;조건식;증감식) { ///괄호안의 내용을 조건식대로 반복
// 조건식이 참(true)인 동안 수행될 문장
}
*실행순서:초기화->조건식->수행될 문장->증감식->조건식->수행될 문장..
(초기화는 첫 실행시 단 한번만 진행한다.)
*조건식이 거짓이면 반복을 중단하고 for문을 벗어난다.
*중첩for문 사용시 첫 for문은 열(↓)로 나열하고,
두 번째 for문은 행(→)으로 나열한다.
ex18.
for(int i=1; i<=5; i++) { for(int j=1; j<=10; j++) { System.out.print(”*”); } System.out.println(); // 한 줄, 열 개의 *가 끝나면 줄바꿈 } |
********** ********** ********** ********** ********** |
(1-1) 향상된 for문
for (타입 변수명 : 배열 또는 컬렉션) {
- 일반적인 for문과 달리 배열이나 컬렉션에 저장된 요소들을 읽어오는 용도로만 사용할 수 있다.
=> for(int tmp : arr)
}
②while문=>조건식이 참인 동안, 거짓이 될 때 까지 블럭내의 문장 반복
*기본 구조:
int i=1;
while(조건식) {
//조건식이 참일 동안 반복될 문장
}
*while문은 바로 윗줄에 변수 선언 해주어야 함.
③do-while문=>블럭을 먼저 수행한 후에 조건식을 평가한다.
*기본 구조:
do {
//조건식이 참일 때 수행될 문장(처음 한 번은 무조건 실행)
} while(조건식);
④break문=>자신이 포함된 가장 가까운 반복문을 벗어난다.
ex19.
int sum=0; int i=0; while(true) { if(sum>100) break; ++i; sum+=i; } //end of while System.out.println(”i=”+i); System.out.println(”sum=”+sum); |
i=14 sum=105 |
*여러개의 반복 중첩문의 경우 break 만으로 반복 중첩문을 완전히 벗어날 수
없다. =>중첩 반복문 앞에 이름을 붙이고 break문과 continue문 이름을 정해줌
으로써 하나 이상의 반복문을 벗어나거나 건너뛸 수 있다.
ex20.
Loop1:for(int i=2; i<=9; i++) { for(int j=1; j<=9; j++) { if(j==5) break Loop1; System.out.println(i+”*”+j+”=”+i*j); } System.out.println(); } |
2*1=2 2*2=2 2*3=6 2*4=8 |
⑤continue문=>반복문 진행 중 continue문을 만나면 반복문의 끝으로 이동
*for문-증감식으로 이동
*while, do-while문-조건식으로 이동
*break와 달리 반복문 전체를 벗어나지는 않기 때문에, 전체 반복 중에서
특정 조건을 만족하는 경우를 제외하고자 할 때 유용하다.
10.임의의 정수=>Math.random()
*math.random() : 0.0과 1.0사이의 범위에 속하는 하나의 double값을 반환
*0.0≤math.random()〈1.0 (0.0은 포함되나, 1.0은 포함되지 않음)
(1)math.random()*10 : 0.0과 10.0사이의 double값
(2)(math.random()*10)+1:1.0과 11.0사이의 double값
(3)(int)(math.random()*10+1):1과 10사이의 int값
(4)(int)(math.random()*45):0과 44사이의 int값
ex21.
int num=0; for(int i=1; i<-5; i++) { //괄호안의 내용을 5번 반복한다. num=(int)(math.random()*6)+1; System.our.pirnt(num+” “); } |
6 1 1 5 2 |
11.화면으로부터 입력받기
ex22.
import java.util.Scanner; clasee Ex2_10 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.print(”두 자리 정수를 하나 입력해주세요.>”); String input=scanner.nextLine(); int num=Integer.parseInt(input); System.out.println(”입력내용:”+input); System.out.printf(”num=%d%n”, num); } } |
두 자리 정수를 하나 입력해주세요.>22 입력내용:22 num=22 |
Scanner클래스를 사용하여 사용자로부터 입력받는다.
=> 이와 같은 경우 받은 값에 대한 형변환이나 유효성 검사를 해주는 것이 좋다.
nextLine(); : 값을 입력하고 엔터를 치면 값을 받아들인다.
'Study > Java' 카테고리의 다른 글
06. <제어자, 캡슐화, 다형성, 형변환, 인터페이스 > ~자바의 정석 summary ~ (0) | 2023.01.13 |
---|---|
05. <오버로딩, 생성자, 상속, 포함 > ~자바의 정석 summary ~ (0) | 2023.01.12 |
04. <배열, 가변배열, 객체지향1 > ~자바의 정석 summary ~ (0) | 2023.01.11 |
02. <타입변환, 형변환, 연산자> ~자바의 정석 summary ~ (0) | 2023.01.09 |
01. <변수, 상수, 리터럴, 지시자> ~자바의 정석 summary ~ (4) | 2023.01.08 |
댓글