JAVA/개념정리
Chapter 04. 조건문과 반복문
inderrom
2022. 9. 12. 20:17
조건문 (if, switch)
if문
- if(조건식){ } : 조건식의 결과가 true 이면 블럭안의 문장을 수행
- else if(조건식){ } : 다수의 조건이 필요할 때 if 뒤에 추가
- else{ } : 결과가 true인 조건식이 하나도 없을때 수행
int a = 1;
if (a == 1) {
System.out.println("조건식의 결과가 true면 수행된다");
}
if (a == 0) {
System.out.println("조건식의 결과가 false면 수행되지 않음");
}
if (a == 0) {
System.out.println("a가 0인 경우 하고 싶은 것");
} else if (a == 1) {
System.out.println("a가 1인 경우 하고 싶은 것");
} else if (a == 2) {
System.out.println("a가 2인 경우 하고 싶은 것");
} else {
System.out.println("이외의 경우에 하고 싶은 것");
}
조건절의 범위가 큰 것이 위에 있으면 작은 조건은 사용되지 않을 가능성이 높으므로 작성에 주의한다.
switch문
- switch(int/String){case 1: break;}
- 조건식의 결과는 정수와 문자열만 허용된다.
- 조건식과 일치하는 case 문 '이후'의 문장을 수행한다.
// 입력하는 월에 해당하는 계절을 출력해봅시다. (switch 사용)
// 345 봄 678 여름 91011가을 1212 겨울
Scanner sc = new Scanner(System.in);
System.out.println("월을 입력하세용 >>");
int month = Integer.parseInt(sc.nextLine());
switch(month) {
case 3: case 4: case 5:
System.out.println("봄");
break;
case 6: case 7: case 8:
System.out.println("여름");
break;
case 9: case 10: case 11:
System.out.println("가을");
break;
case 12: case 1: case 2:
System.out.println("겨울");
break;
}
가위바위보
Scanner sc = new Scanner(System.in);
System.out.println("가위바위보 게임 시작!");
System.out.println("루루 : ");
String ruru = sc.nextLine();
System.out.println("라라 :");
String rara = sc.nextLine();
switch(ruru) {
case "가위":
if(rara.equals("가위")){
System.out.println("무승부");
break;}
else if (rara.equals("바위")){
System.out.println("라라 승!");
break;}
else if(suk.equals("보")) {
System.out.println("루루 승!");
break;}
case "바위":
if(suk.equals("가위")){
System.out.println("루루 승!!!");
break; }
else if (rara.equals("바위")){
System.out.println(" 무승부");
break;}
else if(rara.equals("보")) {
System.out.println("라라 승!");
break; }
case "보":
if(rara.equals("가위")){
System.out.println( "라라 승!!!");
break;}
else if (rara.equals("바위")){
System.out.println(" 루루 승!!");
break;}
else if(rara.equals("보")) {
System.out.println("무승부");
break;}
default : System.out.println();
break;
}
temp
임시로 저장해 놓는 것! 비교할 때 씁니다! 내림차순 오름차순!
// 숫자 3개를 입력받아 내림차순으로 출력해주세요.
// 출력 예 : 40 > 24 > 7
Scanner sq = new Scanner(System.in);
System.out.println("첫 입력 >>");
int num1 = Integer.parseInt(sq.nextLine());
System.out.println("둘 입력 >>");
int num2 = Integer.parseInt(sq.nextLine());
System.out.println("셋 입력 >>");
int num3 = Integer.parseInt(sq.nextLine());
if (num1 < num2) {
int temp = num1; // 덮어씌우는 거임 임시로
num1 = num2;
num2 = temp;
}
if (num1 < num3) {
int temp = num1;
num1 = num3;
num3 = temp;
}
if (num2 < num3) {
int temp = num2;
num2 = num3;
num3 = temp;
}
System.out.println(num1 + " > " + num2 + ">" + num3);
반복문(for, while, do while)
for문
-for(초기화; 조건식; 증감식 {실행문}
- 실행문을 정해진 횟수만큼 반복하게 해주는 문장
for(int i = 1; i < 10; i++) {
// 초기화 : 조건식과 증감식에 사용할 변수 초기화
// 조건식 : 연산결과가 true이면 블럭 안의 내용을 수행한다.
// 증감식: 변수를 증가/감소시켜 반복문을 제어한다.
System.out.println(i + "번째 반복");
// int i는 for문{}블럭안에서만 선언 가능함
// 사용범위를 잘 정해야함.
// 초기화한 변수는 블럭안에서만 사용할 수 있다.
// 변수는 보통 int i j k .. 순서로 씀
}
-규칙이 있는 문장들을 효율적으로 작성하기 위해 반복문을 사용한다.
*구구단 출력
for(int a = 2; a <=9; a++) {
for(int b =1; b<=9; b++) {
System.out.println(a + "x" + b + "=" + (a*b));
}
}
* 구구단 전체를 가로로 출력해주세요
for(int i = 2; i <=9; i++) {
for(int j = 1; j <=9; j++) {
System.out.print(i + " * " + j + " = " + i*j + "\t");
}
System.out.println();
}
가로로 출력하기 위해선 이중for문을 만들고 안쪽for문 안에 출력할 때 print 꼭 확인하기!
outer:
for(int i = 1; i <= 10; i++) {
inner:
for(int j = 1; j <= 10; j++) {
if(j == 5) {
continue outer;
}
System.out.println(i + " : " + j);
// j가 5일때 반복문 모두 종료하시오
// break; : 가장 가까운 반복문 하나를 빠져나간다.
// break 반복문 이름; : 이름에 맞는 반복문을 빠져나간다.
// continue; : 가장 가까운 반복문 하나의 반복 회차를 빠져나간다.
// continue 반복문 이름; : 이름에 맞는 현재 반복 회차를 빠져나간다.
// for문은 이중 넘게 쓰는 것은 불필요함 그래서 outer,inner를 써준다
}
}
while문
- while(조건식){실행문}
- 실행문을 조건식이 만족하는 동안 '계속' 반복하는 문장
- 반복횟수가 정확하지 않을때 사용함
// a에 2씩 몇번을 곱해야 1000 이상이 되는지 알고싶다.
int a = 1;
int count = 0;
while(a <= 1000) {
a *= 2;
count ++;
System.out.println(count + " : " + a);
}
do-while문
- do{실행문}while(조건식)
- 최소 한 번의 실행이 보장된다.
a = 1000;
count = 0;
do {
a *= 2;
count ++;
System.out.println(count + " : " + a);
}while(a <= 1000);