
- 블럭 { } : 여러문장을 하나로 묶어주는 것
- 한 문장만 존재한다면 블럭을 사용하지 않아도 된다.
if(score) > 60){ System.out.println("합격입니다"); }if(score) > 60) System.out.println("합격입니다"); // 위 식과 같은 결과
- Math.random() : 0.0과 1.0사이의 임의의 double값 반환.
- 정수값을 반환받고 싶다면 형변환 연산자 사용
Math.random() // // 0.0 <= Math.random() < 1.0 (Math.random()*10) // 0.0 <= (Math.random()*10) < 10.0 (int)(Math.random()*10) // 0 <= (int)(Math.random()*10) < 10
조건문 : 조건을 만족할때만 { }를 수행
조건식이 참(true)일 때, 괄호{ }안의 문장들을 수행
if(조건식) {
//조건식이 참일 때 수행.
}
// ex)
if(score > 60){
System.out.println("합격");
}
둘 중의 하나 - 조건식이 참일 때와 거짓일 때로 나눠서 처리
if(조건식){
//조건식이 참일 때 수행.
}
else{
//조건식이 거짓일 때 수행.
}
//ex)
if(input == 0)
System.out.println("0입니다.");
else
System.out.println("0이 아닙니다");
여러 개 중의 하나 - 여러개의 조건식을 포함한 조건식
if(조건식1){
//조건식1이 참일 때 수행.
}
else if(조건식2){
//조건식1이 거짓이고 조건식2가 참일 때 수행.
}
else if(조건식3){
//조건식1,조건식2가 거짓이고 조건식3이 참일 때 수행.
}
else{
//어느 조건식도 참이 아닐때 수행.
}
//ex)
if(score >= 90) //90점 이상
grade = 'A';
else if(score >= 80) // 80점 이상 90점 미만
grade = 'B';
else if(score >= 70) // 70점 이상 80점 미만
grade = 'C';
else //70점 미만
grade = 'D';
❗ 모든 조건식을 만족하더라도 가장 먼저 나오는 블럭만 수행.
ex) 조건식1, 조건식2 둘다 참이더라도 조건식1이 참일 때의 블럭만 수행.
if문 안에 if문이 포함됨.
if(조건식1){
if(조건식2){
//조건식1과 조건식2가 참일 때 수행.
}
else{
//조건식1이 참이고 조건식2가 거짓일 때 수행.
}
}
else{
//조건식1이 거짓일 때 수행.
}
//ex)
if(num >= 0)
if(num != 0)
sign = '+';
else
sign = '-';
처리해야 하는 경우의 수가 많을 때 유용한 조건문
❗ break문이 없으면 참인 부분부터 break문이나 switch문의 끝을 만날 때까지 수행.
swtich(조건식){
case 값1 :
//조건식의 값이 값1일때 수행.
break; //없을시 값2도 수행.
case 값2 :
//조건식의 값이 값2일때 수행.
break;
.
.
.
default :
//조건식의 결과와 일치하는 case문이 없을 때 수행.
}
❗ switch문의 제약조건
int result = 0;
int num = 2;
final int ONE = 1;
switch(result){
case '1': //OK. 문자 리터럴
case ONE: //OK. 정수 상수
case "YES": //OK. 문자열 리터럴. - JDK 1.7부터 허용
case num: //에러. 변수는 불가
case 1.0: //에러. 실수는 불가
}
반복문 : 조건을 만족하는 동안 { }를 수행
조건을 만족하는 동안 블럭{ }을 반복 - 반복횟수를 알 때 적합
for(초기식; 조건식; 증감식){
//조건식이 참일 때 수행될 문장
}
//ex)
for(int i = 1; i<=5; i++){ // i = 1,2,3,4,5(true), 6(false)
System.out.println("do"); // 5번 반복
}
for(int i = 1, j = 10; i<=10; i++,j--)
System.out.println("i=" + i + "j=" + j);
❗ 무한 루프에 걸리는 경우
//무한 루프
for(int i = 1; i<5; i--){ // i = 1,0,-1,-2,-3 ... ∞
System.out.println("do");
}
for문 안에 또 다른 for문이 포함됨.
//구구단
for(int i = 2; i<=9; i++){
for(int j = 1; j<=9; j++){
Sytem.out.println(i + "X" + j "= " + (i*j));
}
}
/*
결과)
2X1= 2;
2X2= 4;
2X3= 6;
.
.
.
9X9= 81;
*/
조건을 만족시키는 동안 블럭{ }을 반복 - 반복횟수를 모를 때
while(조건식){
//조건식의 연산결과가 참인 동안, 계속 반복.
}
//ex)
int i = 1;
while(i<=10){
System.out.println(i);
i++; //for문의 증감식으로 볼수 있음. 없을시 무한루프.
}
블럭{ }을 최소한 한 번 이상 반복 - 사용자 입력받을 때 유용
do{
//조건식의 연산결과가 참일 때 수행. (처음 한번은 무조건 실행)
}while(조건식); //끝에 ';'붙이는거 잊지않기
자신이 포함된 하나의 반복문을 빠져나간다.
// 1
for(int i = 1; i<5; i--){ // i = 1,0,-1,-2,-3 ... ∞
System.out.println("do");
if(i < 0)
break; // 무한루프지만 조건식만 참이라면 벗어날 수 있음.
}
// 2
int i = 1;
while(i<=10){
System.out.println(i);
if(i == 5)
break; // i = 5가 될때 탈출.
i++;
}
자신이 포함된 반복문의 끝으로 이동 - 다음반복으로 넘어감.
- 특정 조건을 건너뛸 때 유용
for(int i = 0; i<=10; i++){
if(i%3==0) // i가 3의 배수일 때 건너뜀.
continue;
System.out.println(i);
}
/*
1
2
//(3)
4
5
//(6)
7
8
//(9)
10
*/
반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
Loop1 : for(int i=2; i<=0; i++) {
for(int j=1; j<=9; j++){
if(j==5)
break Loop1; // Loop1을 빠져나감.
System.out.println(i + "*" + j + "=" + i*j);
}
System.out.println();
} // break시 여기로 옴.
/*
2*1=2
2*2=4
2*3=6
2*4=8
*/