조건을 만족할때만 {}를 1번 수행합니다. (0~1번)
조건을 만족하는 동안 {}를 n번 수행합니다.(0~n번)
조건식이 참(true)일 때, 괄호{ }안의 문장들을 수행한다.
if(조건식) {
//조건식이 참일 때 수행
}
조건식의 다양한 예)
//정수 x가 90이상 100이하일때
90 <= x && x <= 100
//문자 c가 공백이거나 탭 또는 개행 문자일때
c == ' ' || c == '\t' || c== '\n'
//문자열 str의 내용이 "yes"일때(대소문자 구분)
str.equals("yes")
//문자열 str의 내용이 "yes"일때(대소문자 구분안함)
str.equalsIgnoreCase("yes")
여러 문장을 하나로 묶어주는 것입니다.
if(score > 60) { //블럭의 시작
//탭(tab)에 의한 들여쓰기 추천
} //블럭의 끝
둘 중의 하나의 조건식이 참일 때와 거짓일 때로 나눠서 처리합니다.
if(조건식) {
//조건식이 참일 때 수행
} else {
//조건식이 거짓일 때 수행
}
여러개의 조건식 중 한가지만 수행되는 if조건식입니다.
if(조건식1) {
//조건식1이 참일 때 수행
} else if(조건식2) {
//조건식2가 참일 때 수행
} else if(조건식3) {
//조건식3이 참일 때 수행
} else {
//위 어느 조건식도 참이 아닐 때 수행
}
예제)
import java.util.Scanner;
class Ex4_4 {
public static void main(String [] args) {
int score = 0; //점수를 저장하기 위한 변수
char grade = ' '; //학점을 저장하기 위한 변수
System.out.println("점수를 입력하세요>");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); //입력받은 점수를 변수 score에 저장
if(score >= 90) {
grade = 'A';
} else if(score >= 80) {
grade = 'B';
} else if(score >= 70) {
grade = 'C';
} else {
grade = 'D';
}
System.out.println("당신의 학점은 "+grade+"입니다.");
}
}
if (조건식1) {
if (조건식2) {
//조건식1과 조건식2가 모두 true일 때 수행
} else {
//조건식1은 true이고 조건식2가 false일 때 수행
}
} else {
//조건식1이 false일 때 수행
}
처리해야 하는 경우의 수가 많을 때 유용한 조건문입니다.
switch(조건식) { //switch문의 조건식 결과값은 true, false가 아니다.
case 값1 :
//조건식의 결과가 값1과 같을 때 수행
break;
case 값2 :
//조건식의 결과가 값2과 같을 때 수행
break;
//...
default :
//조건식과 일치하는 case문이 없을 때 수행
}
예제)
import java.util.Scanner;
public class Ex4_6 {
public static void main(String [] arge) {
System.out.println("현재의 월을 입력하세요.>");
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();
String season = "";
switch(month) {
case 3:
case 4:
case 5:
season = "봄";
break;
case 6: case 7: case 8:
season = "여름";
break;
case 9: case 10: case 11:
season = "가을";
break;
default :
season = "겨울";
}
System.out.printf("현재의 계절은 %s입니다.", season);
}
}
Math.random() 0.0과 1.0사이의 임의의 double값을 반환합니다.
예제)
for(int i=0; i<=10; i++) {
//-5부터 5사이의 난수
System.out.println((int)(Math.random() * 11) -5);
}
조건을 만족하는 동안 블럭{ }을 반복합니다.
반복횟수를 알 때 적합합니다.
for(초기화; 조건식; 증감식) {
//식
}
예제)
for(int i=1, j=10; i<=10; i++, j++) {
System.out.println("i="+i+", j="+j);
}
for문 내에 또 다른 for문을 포함시킬 수 있습니다.
예제)
//구구단
for(int i=2; i<=9; i++) {
for(int j=1; j<=9; j++) {
System.out.println(i+"*"+j+"="+(i*j));
}
System.out.println();
}
조건을 만족시키는 동안 블럭 {}을 반복 - 반복횟수를 모를때 유용합니다.
while (조건식) {
//조건식의 연산결과가 참인 동안, 반복될 문장을 적는다.
}
블럭{ }을 최소한 한 번 이상 반복 - 사용자 입력반을 때 유용합니다.
do {
//조건식의 연산결과가 참인 동안, 반복될 문장을 적는다.
} while (조건식); //끝에 ;을 잊지 않도록 주의
예제)
import java.util.Scanner;
public class DoWhile {
public static void main(String [] args) {
int rnum = 0;
int input = 0;
Scanner scanner = new Scanner(System.in);
rnum = (int)(Math.random() * 100 +1);
do {
System.out.printf("숫자를 입력하세요. : ");
input = scanner.nextInt();
if(rnum>input) {
System.out.println("입력하신 수는 정답보다 작습니다.");
} else if(rnum<input) {
System.out.println("입력하신 수는 정답보다 큽니다.");
}
} while(rnum != input);
System.out.println("정답입니다.");
}
}
자신이 포함된 하나의 반복문을 벗어날때 사용합니다.
예제)
//sum이 100이 넘어가면 종료되는 반복문
int sum = 0;
int i = 0;
whlie(true) {
if(sum > 100) {
break;
}
++i;
sum += i;
}
System.out.println("i="+i);
System.out.println("sum="+sum);
자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감
예제)
//i가 2의 배수인경우 출력하지 않는 반복문
for(int i=0; i<=10; i++) {
if(i%2==0) {
continue;
}
System.out.println(i);
}
반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
중첩반복문과 같은 상황에서 유용하게 쓰인다.
예제)
//2단의 5까지만 출력되는 구구단
Loop1 : for(int i=2; i<=9; i++) {
for(int j=1; j<=0; j++) {
if(j==5)
//Loop1이 없다면 안쪽for문만 종료된다.
break Loop1;
System.out.println(i+"*"+j+"="+(i*j));
}
System.out.println();
}