1. 제어문(Control Flow Statements)
- 조건문(a conditional statement)과 반복문(a repeating sentence)을 합해서 제어문이라 한다
- 일반적인 코드의 흐름은 위에서 아래로 향하지만, 제어문을 사용하면 개발자가 원하는 방향으로 변경할 수 있다
2. 조건문(a conditional statement)
- 조건문은 특정 조건에 부합하는 경우에 특정 코드의 실행 여부를 결정할 수 있다
1) if문
- 아래와 같은 형식으로 사용할 수 있다
- 중괄호 { }를 사용하여 여러 문장을 하나로 묶을 수 있으며 '블록(block)'이라고 한다
더보기
if (조건식) { 실행 블록 }; //만약에 조건식이 true이면 실행블럭을 진행한다
2) if ~else문
- 조건식이 false일 경우에 조건문이나 실행블록을 추가하여 코드의 실행여부를 결정한다
- else는 생략할 수 있다
더보기
if(조건식1){실행블록1}; //조건식1이 true이면 실행블록을 진행한다
else if(조건식2){실행블록2}; //조건식1이 false이면 조건식2의 조건식을 검토하고 조건식2가 true이면 실행블록2를 진행한다
else{실행블록3}; //조건식1과 조건식2가 모두 false이면 실행블록3을 진행한다
import java.util.*;
public class Aaaa {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//int num = scanner.nextInt();
String input = scanner.nextLine();
//System.out.println(num);
System.out.println("입력한 숫자는?");
if (input.equals("1")) {
System.out.println("1번");
} else if (input.equals("2")) {
System.out.println("2번");
} else if (input.equals("3")) {
System.out.println("3번");
} else if (input.equals("4")) {
System.out.println("4번");
} else if (input.equals("5")) {
System.out.println("5번");
} else if (input.equals("6")) {
System.out.println("6번");
} else {
System.out.println("없는 숫자! " + input);
}
}
}
result
5 //입력 후 enter
입력한 숫자는?
5번
3) switch문
- if문은 조건식에 의해 실행블록이 결정되어 출력된다
- switch문은 입력값에 따라 실행블록이 결정되어 출력된다
- break 명령어로 true일 경우 실행블록을 탈출한다
- defualt는 생략 가능하다
더보기
switch ( 입력변수 ) { //switch문에서 입력받을 변수를 지정해 준다
case "입력값" : //입력변수 값과 대조할 값을 넣어준다
실행블록1 ; //입력변수와 입력값이 일치했을 경우에 실행블록1을 진행한다
break ; //입력변수 값과 입력값이 일치할 경우 실행블록1을 진행하고 멈춘다
default: //입력변수 값과 입력값이 불일치 할 경우 실행블록2을 진행한다
실행블록2 ;
break ;
import java.util.*;
public class Aaaa {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//int num = scanner.nextInt();
String input = scanner.nextLine();
//System.out.println(num);
System.out.println("입력한 숫자는?");
switch (input) {
case "1":
System.out.println("1번");
break;
case "2":
System.out.println("2번");
break;
case "3":
System.out.println("3번");
break;
case "4":
System.out.println("4번");
break;
case "5":
System.out.println("5번");
break;
default:
System.out.println(input + " 번은 해당이 없는 숫자입니다");
break;
}
}
}
result
6 //입력 후 enter
입력한 숫자는?
6 번은 해당이 없는 숫자입니다
- 타입에 따라 문자열 입력도 가능하다
import java.util.*;
public class Aaaa {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//int num = scanner.nextInt();
String input = scanner.nextLine();
//System.out.println(num);
System.out.println("입력한 사람은");
switch (input) {
case "kim":
System.out.println("대한민국 국적입니다");
break;
case "smith":
System.out.println("미국 국적입니다");
break;
case "jonadan":
System.out.println("가나 국적입니다");
break;
default:
System.out.println(input + " 번은 해당이 없는 숫자입니다");
break;
}
}
}
result
smith
입력한 사람은
미국 국적입니다
- JDK 14 이상 부터는 아래와 같은 형식으로 사용할 수 있다
import java.util.*;
public class Aaaa {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//int num = scanner.nextInt();
String[] inputList = {"kim", "smith", "jonadan"};
String input = scanner.nextLine();
//System.out.println(num);
System.out.println("입력한 사람은");
switch (input) {
case "kim" -> System.out.println("대한민국 국적입니다");
case "smith", "jonadan" -> System.out.println("미국 또는 가나 국적입니다");
default -> System.out.println(input + " 번은 해당이 없는 숫자입니다");
}
}
}
// : 대신 -> 의 사용으로 break 생략
// , 를 사용하여 여러 조건을 한번에 처리할 수 있다
3. 반복문(a repeating sentence)
- 코드들이 반복적으로 실행되도록 하는 경우에 사용한다
1) for문
- for문은 조건식이 참(true)인 경우에 주어진 횟수만큼 실행문을 반복적으로 진행한다
-
더보기sum = 0 ;
for (초기화 , 조건식, 증감식 ) { 실행블록 ; }
for (int i = 0, i < 10 , i++ ) { sum = sum + i ; } - 변수 i는 임의의 변수명이므로 변경하여 사용해도 된다
- 통상적으로 i 는 iterator(반복계수)를 의미하여 많이 사용한다
- for문은 반복적으로 사용해야 할 조건을 조건식을 사용하여 단축시켜주므로 코드를 줄일 수 있다
-
더보기▷ 초기화 : for문을 시작할 때 한 번만 실행되며, 사용할 변수의 초기값을 지정해 준다
▷ 조건식 : 반복 여부를 결정하는 조건으로 값이 true면 실행블록을 진행하고, false면 실행블록을 진행하지 않고 for문을 끝낸다
▷ 증감식 : for문에서 지정한 변수의 값을 증감시켜 반복 횟수를 결정한다 (++ : 값을 1씩 증가시킨다)
public class Ffile {
public static void main(String[] args) {
int s=0;
for(int i=0; i < 10; i++){
s = s + i;
}
System.out.println(s);
}
}
result
45
- for문의 초기화 식은 생략 가능할 경우 생략할 수 있다
- for문은 둘 이상의 초기화식과 조건식, 증감식을 사용할 수 있다
public class Ffile {
public static void main(String[] args) {
int s = 0;
int s1 = 0;
for(int i=0, j=100; i < 10 && j<200; i++, j++){
s = s + i;
s1= s1 + j;
}
System.out.println(s);
System.out.println(s1);
}
}
result
45
1045
2) enhanced for문(향상된 for문)
- 타입에 따른 값을 배열로 지정하여 주었을 때 for문의 초기화 변수를 지정하고 ':'을 사용하여 참조변수를 가져온다
- 참조변수의 값이 존재하면 반복하여 실행문을 진행한다
public class Ffile {
public static void main(String[] args) {
String[] s = {"kim", "kang", "lee", "choi"};
for(String name : s){
System.out.println("나의 성은 " + name + " 입니다");
}
}
}
result
나의 성은 kim 입니다
나의 성은 kang 입니다
나의 성은 lee 입니다
나의 성은 choi 입니다
3) while문
- while문은 정해진 횟수가 없이 계속 반복한다
- for문과 while문은 초기화, 증감식의 위치만 다르고 상호대체하여 사용이 가능하다
-
더보기초기화 ;
while (조건식) { 실행블록 ; 증감식 ; } - 초기화, 증감식이 불필요한 경우에는 생략할 수 있다
public class Wfile {
public static void main(String[] args) {
int n = 0, s = 0;
while(n <= 9){
s = s + n; //s += n 으로 작성할 수 있다
n++;
}
System.out.println(s);
}
}
result
45
//n이 9보다 작거나 같을때까지 반복하여 연산을 수행한다
- 조건식에 true를 넣으면 while문은 무한반복을 한다
- true를 사용할 경우 if문이나 break를 사용하여 중단할 수 있다
4) do-while문
- do-while문은 조건식이 우선이 아니라 실행문을 우선 진행하고 조건식으로 넘어간다
- 조건식이 true이면 반복하고 false이면 중단한다
-
더보기do { 실행블록 }
while(조건식);
import java.util.Scanner;
public class Dfile {
public static void main(String args[]){
int input = 0, randomNum = 0;
randomNum = (int)(Math.random() * 10) + 1; // 1 ~ 10 임의의 수를 생성
Scanner scanner = new Scanner(System.in);
do{
System.out.println("1과 10 사이의 정수를 입력하세요");
input = scanner.nextInt();
if(input > randomNum) {
System.out.println("더 작은 정수를 입력하세요");
} else if (input < randomNum) {
System.out.println("더 큰 정수를 입력하세요");
}
} while(input != randomNum);
System.out.println(randomNum +" 정답입니다!");
}
}
1과 10 사이의 정수를 입력하세요
9
더 작은 정수를 입력하세요
1과 10 사이의 정수를 입력하세요
5
더 작은 정수를 입력하세요
1과 10 사이의 정수를 입력하세요
3
더 큰 정수를 입력하세요
1과 10 사이의 정수를 입력하세요
4
4 정답입니다!
'JAVA' 카테고리의 다른 글
Java - 문자열 입력(Scanner, BufferReader) (0) | 2022.08.08 |
---|---|
Java - 날짜(Date), 시간(Time) (0) | 2022.08.08 |
Java - 콘솔 입출력(I/O) (0) | 2022.06.02 |
Java - 연산자(Operator) (0) | 2022.06.02 |
자료구조 - 트리(Tree) (0) | 2022.05.30 |