조건문과 반복문 flow control statement(제어문)
If-else if 문
여러 개 중의 하나 - 여러 개의 조건식을 포함한 조건식
중첩 if 문
중첩횟수 제약은 없음
괄호가 중요,,!
Switch문
처리해야 하는 경우의 수가 많을 때 유용한 조건문
break문을 빼먹지 말자
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
Switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열(1.7 버전이후)이어야 한다.
2. case문의 값은 정수, 상수(문자포함), 문자열만 가능하며, 중복되지 않아야 한다.
임의의 정수 만들기
Math.random() - 0.0과 1.0사이의 임의의 double값을 반환
0.0 <= Math.random() < 1.0
1과 3사이의 정수 구하기
1. 각 변에 3을 곱한다.
2. 각 변을 Int형으로 변환한다.
3. 각 변에 1을 더한다.
System.out.println((int)(Math.random()*11)-5);//-5와 5의 사이
for문
조건을 만족하는 동안 블럭{}을 반복 - 반복 횟수를 알 때 적합
변수의 범위(scope)는 좁을수록 좋다; 선언위치부터 선언된 블럭의 끝까지
//조건식을 생력하면, true로 간주되엇 무한반복문이 된다.
for(;;){
System.out.println("i="+1);
}
중첩 for 문
직사각형 별찍기
public class Ex4_15 {
public static void main(String[] args) {
for(int i=1; i<=5; i++) {
for (int j = 1; j <= 10; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
별 늘리기
public class Ex4_15 {
public static void main(String[] args) {
for(int i=1; i<=5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
while문
조건을 만족시키는 동안 블럭{}을 반복 - 반복 횟수 모를 때
while 조건식 {
//조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다.
}
for문과 100% 상호 대체 가능
for 문
public class Ex4_14 {
public static void main(String[] args) {
int num =12345, sum =0;
//10으로 나머지 연산을 하면 마지막 자리를 얻는다.
// System.out.println(12345%10);
//num = 12345, 1234, 123,12, 1
for(num=12345; num>0; num=num/10){
System.out.println(num);
}
System.out.println("각 자리수의 합:" +sum);
}
}
while문으로 바꾸기
public class Ex4_14 {
public static void main(String[] args) {
int num =12345, sum =0;
//10으로 나머지 연산을 하면 마지막 자리를 얻는다.
// System.out.println(12345%10);
//num = 12345, 1234, 123,12, 1
while(num>0){
sum += num%10;
System.out.println("sum"+sum+",num%10="+num%10);
num =num/10;
}
System.out.println("각 자리수의 합:" +sum);
}
}
do-while문
블럭{}을 최소한 한 번 이상 반복 - 사용자 입력받을 때 유용
break문
자신이 포함된 하나의 반복문을 벗어난다.
while문
public class Ex_16 {
public static void main(String[] args) {
int sum =0;
int i =0;
while(true){//무한 반복문 for(;true;) {}
if(sum>100)
break; //자신이 속한 하나의 반복문을 벗어난다.
++i;
sum += i;
} // end of while
System.out.println("i=" +i);
System.out.println("sum=" + sum);
}
}
for문
public class Ex_16 {
public static void main(String[] args) {
int sum =0;
int i =0;
for(;;){//무한 반복문 for(;true;) {}
if(sum>100)
break; //자신이 속한 하나의 반복문을 벗어난다.
++i;
sum += i;
} // end of while
System.out.println("i=" +i);
System.out.println("sum=" + sum);
}
}
continue문
자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘아감
전체 반복 중에서 특정 조건시 반복을 건너뛸 때 유용
break문과 달리 반복문을 벗어나지 않는다.
public class Ex4_17 {
public static void main(String[] args) {
for(int i=0; i<= 10; i++){
if(i%2==0)
continue;
System.out.println(i);
}
}
}
예시
import java.util.Scanner;
public class Ex4_18 {
public static void main(String[] args) {
int menu =0;
int num =0;
Scanner scanner = new Scanner(System.in);
while (true){ // 무한 반복문
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.println("원하는 메뉴(1~3)을 선택하세요. (종료:0>");
String tmp = scanner.nextLine(); //화면에서 입력받은 내용을 tmp에 저장
menu = Integer.parseInt(tmp); //입력받은 문자열(tmp)을 숫자로 변환
if(menu==0) {
System.out.println("프로그램을 종료합니다");
break;
} else if (!(1<=menu && menu<=3)) {
System.out.println("메뉴를 잘못 선택하셨습니다. (종료는 0)");
continue;
}
System.out.println("선택하신 메뉴는" + menu + "번입니다.");
} //main의 끝
}
}
이름붙은 반복문
반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
'Java > 자바의 정석' 카테고리의 다른 글
남궁성 자바의 정석 기초편 ch 6 객체지향 언어 클래스 (0) | 2022.11.21 |
---|---|
남궁성 자바의 정석 기초편 ch 5 배열 (0) | 2022.11.21 |
남궁성 자바의 정석 기초편 ch 3 (0) | 2022.11.19 |
남궁성 자바의 정석 기초편 ch 2 (0) | 2022.11.19 |
남궁성 자바의 정석 기초편 ch 1 (0) | 2022.11.14 |