1. 조건문 - if, switch
1.1 if문
만일(if) 조건식이 참이면 괄호 안의 문장들을 수행하라
if(조건식) {
}
if(조건식) {
} else if(조건식) {
} else if(조건식2){
} else if (조건식 3){
}else {
}
위 경우 앞의 조건을 제외한 조건에서 설정하여 보다 간결하게 작성하는 것이 중요하다!!
1.5 Switch 문
- 조건식을 계산한다.
- 조건식의 결과와 일치하는 case문으로 이동한다.
- 이후의 문장들을 수행한다.
- break문이나 switch 문의 끝을 만나면 switch 문 전체를 빠져나간다.
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch 문의 끝을 만나면 switch 문 전체를 빠져나간다.
위와 같이 권한을 달리하게 쓰는 경우도 있다. / 이경우 레벨2 면 2,1의 경우 가능 레벨 3면 3,2,1 모두 가능해진다.
switch문의 제약 조건
- switch 문의 조건식 결과는 정수 또는 문자열이어야 한다.
- case 문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
package chap04;
import java.util.Scanner;
public class FlowEx6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("현재 월을 입력하세요.>");
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();
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;
}
}
}
현재 월을 입력하세요.>6 현재의 계절은 여름입니다.
package chap04;
import java.util.*;
public class FlowEx7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("가위(1), 바위(2),보(3) 중 하나를 입력하세요.>");
Scanner scanner = new Scanner(System.in);
int user = scanner .nextInt();
int com = (int)(Math.random()*3)+1;
System.out.println("당신은 "+ user +"입니다.");
System.out.println("컴은 "+ com +"입니다.");
switch(user-com) {
case 2: case -1:
System.out.println("당신이 졌습니다.");
break;
case 1: case -2:
System.out.println("당신이 이겼니다.");
break;
case 0:
System.out.println("비겼습니다.");
break;
}
}
}
가위(1), 바위(2),보(3) 중 하나를 입력하세요.>3 당신은 3입니다. 컴은 2입니다. 당신이 이겼니다.
package chap04;
import java.util.*;
public class FlowEx8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("당신의 주민번호를 입력하세요. (011231-1111222)>");
Scanner scanner = new Scanner(System.in);
String regNo = scanner.nextLine();
char gender = regNo.charAt(7);
switch(gender) {
case '1': case '3':
System.out.println("당신은 남자입니다.");
break;
case '2': case '4':
System.out.println("당신은 여자입니다.");
break;
default:
System.out.println("유효하지 않은 주민등록번호입니다.");
}
}
}
당신의 주민번호를 입력하세요. (011231-1111222)>123455-1231231 당신은 남자입니다.
2. 반복문 - for, while, do-while
for(초기 변수, 변수 조건, 변수 증감폭)
package chap04;
public class FlowEx16 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i =1; i<=5; i++) {
for (int j =1; j<=10; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
/*
**********
**********
**********
**********
**********
*/
package chap04;
public class FlowEx21 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i=1; i<=5; i++) {
for(int j =1; j<=5; j++) {
if (i==j) {
System.out.printf("[%d,%d]",i,j);
} else {
System.out.printf("%5c",' ');
}
}
System.out.println();
}
}
}
[1,1]
[2,2]
[3,3]
[4,4]
[5,5]
향상된 for문
for (타입 변수명 : 배열 또는 컬렉션) {
}
for(int i=0; i < arr.length; i++){
System.out.println(arr[i]);
}
for (타입 변수명 : 배열 또는 컬렉션){
//반복할 문장
}
for(int tmp : arr) {
System.out.println(tmp);
}
package chap04;
public class FlowEx22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {10,20,30,40,50};
int sum = 0;
for (int i =0; i< arr.length;i++)
System.out.printf("%d ", arr[i]);
System.out.println();
for(int tmp : arr) {
System.out.printf("%d ", tmp);
sum += tmp;
}
System.out.println();
System.out.println("sum="+sum);
}
}
10 20 30 40 50
10 20 30 40 50
sum=150
2.2 while 문
while(조건식) {
// 조건식의 연산결과가 참인 동안, 반복될 문장들을 적는다.
}
for(;;){}
<->
while(true){}
package chap04;
public class FlowEx23 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 5;
while(i--!=0) { //for 루프 아니어도 가능하다!!
System.out.println(i +" - I can do it.");
}
}
}
4 - I can do it.
3 - I can do it.
2 - I can do it.
1 - I can do it.
0 - I can do it.
package chap04;
import java.util.Scanner;
public class FlowEx25 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = 0, sum = 0;
System.out.print("숫자를 입력하세요. (예:12345)>");
Scanner scanner = new Scanner (System.in);
String tmp = scanner.nextLine();
num = Integer.parseInt(tmp);
while(num!=0) {
sum+=num%10;
System.out.printf("sum=%3d num %d%n", sum,num);
num /=10;
}
System.out.println("각 자리수의 합:"+sum);
}
}
숫자를 입력하세요. (예:12345)>34515254
sum= 4 num 34515254
sum= 9 num 3451525
sum= 11 num 345152
sum= 16 num 34515
sum= 17 num 3451
sum= 22 num 345
sum= 26 num 34
sum= 29 num 3
각 자리수의 합:29
package chap04;
public class FloweEx26 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
int i =0;
while((sum += ++i)<=100) {
System.out.printf("%d - %d%n",i,sum);
}
}
}
1 - 1
2 - 3
3 - 6
4 - 10
5 - 15
6 - 21
7 - 28
8 - 36
9 - 45
10 - 55
11 - 66
12 - 78
13 - 91
do - while 문
while문은 조건식의 결과에 따라 블럭이 수행되지 않을 수도 있지만, do -while 문은 최소한 한번은 수행될 것을 보장한다.
do{ } while(조건식);
3. 이름 붙은 반복문
break 문은 근접한 단 하나의 반복문만 벗어날 수 있기 때문에, 여러 개의 반복문이 중첩된 경우에는 break문으로 중첩 반복문을 완전히 벗어날 수 없다. 중첩 반복문 앞에 이름을 붙이고, break문과 continue문에 이름을 지정해 줌으로써 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.
package chap04;
public class FlowEx33 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Loop1 : for(int i=2; i <=9; i++ ) {
for (int j=1; j <=9; j++) {
if(j==2)
//break Loop1;
break;
//continue Loop1;
//continue;
System.out.println(i+"*"+j+"="+i*j);
}
System.out.println();
}
}
}
2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9
'Develope_Web&App > 01_Java & JavaFX' 카테고리의 다른 글
[java] string 변환시키기 (0) | 2021.01.27 |
---|---|
[java] 예외처리 (0) | 2021.01.27 |
[Java] 03 연산자(Operator) (0) | 2021.01.26 |
[Java] chap 02. 변수 (0) | 2021.01.26 |
객체지향 디자인패턴2 (0) | 2020.12.26 |