<오늘의 학습>
1. 조건문 if
2. 조건문 switch-case
3. 반복문 for
4. 반복문 while
5. continue
6. break
3. 반복문 for
1) for문
▶ 반복되는 일을 처리하기 위해 반복문을 사용한다.
for(초기값;조건문;증감식){
① ②⑤ ④
조건문이 참일 때 실행
조건문이 거짓일 때까지 반복 처리
③⑥
}
▷ 예제) 반복문을 이용하여 1부터 10까지/10부터 1까지 출력
/*1부터 10까지 출력*/
int i;
for(i=1;i<11;i++){
System.out.print(i+" ");
}
System.out.println();
/*10부터 1까지 출력*/
for(i=10;i>0;i--){
System.out.print(i+" ");
}
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
▷ 예제) 반복문을 이용하여 아스키코드 'A'의 값을 이용하여 A~Z까지 출력
char c;
for(c='A';c<='Z';c++)
System.out.printf("%c",c);
System.out.println();
//아스키코드표: 'A'는 65
for(c=65;c<=90;c++)
System.out.printf("%c",c);
System.out.println();
/*a~z까지 출력*/
for(c=97;c<=122;c++)
System.out.printf("%c",c);
System.out.println();
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
▷ 예제) 반복문과 조건문을 이용하여 1부터 50까지의 숫자 중 6의 배수만 출력
System.out.print("1부터 50까지의 숫자 중 6의 배수인 수 : ");
for(int i=1;i<=50;i++){
if(i%6==0){
System.out.print(i+" ");
}
}
1부터 50까지의 숫자 중 6의 배수인 수 : 6 12 18 24 30 36 42 48
▷ 예제) 반복문과 조건문을 이용하여 1부터 20까지의 짝수의 합을 출력
int sum=0;
for(int i=1 ; i<=20 ; i++){
if(i%2==0){
sum+=i;//sum=sum+i;
}
}
System.out.print("1부터 20까지의 짝수의 합:"+sum);
1부터 20까지의 짝수의 합:110
※ 반복문 안에서 sum 값이 변화하는 모습을 확인해 보자
/*1~20까지의 짝수의 합*/
/*반복문에서 어떤 값이 sum 값에 더해지는지 확인*/
int sum=0;
for(int i=1 ; i<=20 ; i++){
if(i%2==0){
System.out.printf("%2d+%2d=",sum,i);//한자리부터 두자리수 숫자가 나오기때문에 깔끔하게 출력하기 위해 2칸 확보
sum+=i;//sum=sum+i;
System.out.printf("%3d\n",sum);
}
}
System.out.print("1부터 20까지의 짝수의 합:"+sum);
0+ 2= 2
2+ 4= 6
6+ 6= 12
12+ 8= 20
20+10= 30
30+12= 42
42+14= 56
56+16= 72
72+18= 90
90+20=110
1부터 20까지의 짝수의 합:110
2) 이중 for문
▶ 반복문 안에 또 다른 반복문을 중첩해서 사용할 수 있다.
▷ 예제) 2단부터 9단까지의 구구단 출력
int i,j;
System.out.println("<구구단(2~9단)>");
for(i=1;i<10;i++){
for(j=2;j<10;j++){
System.out.printf("%d*%d=%2d\t",j,i,j*i);
}//inner_for
System.out.println();
}//out_for
<구구단(2~9단)>
2*1= 2 3*1= 3 4*1= 4 5*1= 5 6*1= 6 7*1= 7 8*1= 8 9*1= 9
2*2= 4 3*2= 6 4*2= 8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3= 6 3*3= 9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4= 8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
4. 반복문 while
1) while문
▶ while문은 조건식이 참인 동안 수행문을 반복해서 수행한다.
초기값
while(조건식){
조건식이 참이면 수행
증감식
}
▶ while문의 무한 반복
while(true){
//무한 반복
}
▷ 예제) while문을 이용하여 1부터 10까지 출력
int i=1;
System.out.println("<while(1~10)>");
while(i<=10){
System.out.print(i+" ");
i++;
}//while_end
System.out.println("\n");
<while(1~10)>
1 2 3 4 5 6 7 8 9 10
2) do-while문
▶ while문은 조건을 먼저 검사해서 조건식에 맞지 않으면 한 번도 수행이 일어나지 않는다. 하지만 do-while문은 {} 안의 문장을 무조건 한 번 수행한 뒤에 조건식을 확인한다는 점에서 차이가 있다.
초기값
do{
먼저 1번은 수행한 뒤, 조건식이 참이면 수행
증감식
}while(조건식);
▷ 예제) do~while문을 이용하여 10부터 20까지 출력
i=10;
System.out.println("<do~while(10~20)>");
do{
System.out.print(i+" ");
i++;
}while(i<=20);//do_while_end
<do~while(10~20)>
10 11 12 13 14 15 16 17 18 19 20
▷ 예제) while문과 do-while문을 비교
/*while*/
int a=10000;
while(a<=10){
System.out.println("Hello");
}
System.out.println();//줄바꿈
/*do~while*/
int b=10000;
do{//한 번은 출력
System.out.println("World");
}while(b<=10);
//while문의 Hello 는 출력되지 않음
World
※do-while문은 수행을 한 번 한 뒤에 조건식을 확인하기 때문에 World만 출력된다.
5. continue
- continue문은 반복문과 함께 쓰인다.
- continue문을 만나면 이후의 문장은 수행하지 않고 for문의 처음으로 돌아가 증감식을 수행한다.
- 반복문을 수행할 때, 특정 조건에서는 수행하지 않고 건너뛰어야 할 때 사용한다.
int num, sum=0;
for(num=1;num<=100;num++){
if(num%2==0) //짝수일 때
continue; //num 값을 sum에 저장하지 않고 num++을 수행
sum += num;
}
System.out.println("1부터 100사이의 홀수의 합:"+sum);
1부터 100사이의 홀수의 합:2500
6. break
- switch-case문에서 break문을 사용할 때, 조건을 만족하면 다른 조건을 더 이상 비교하지 않고 switch문을 빠져나온다.
- 반복문에서 break문을 만나면 더 이상 반복하지 않고 해당 반복문을 빠져나온다.
/*for문의 break*/
for(int i=1;i<=50;i++){
System.out.print(i+" ");
if(i==10)
break;//i값이 10이면 반복문 for 탈출
}//for_end
System.out.println();
/*while문의 break*/
int a=1;
while(a<10000){
System.out.print(a+" ");
if(a==10)
break;
a++;
}
1 2 3 4 5 6 7 8 9 10
2023년 5월 17일 수요일
<4일차 수업 후기>
반복할 변수 i 등을 선언할 때 전역 변수보다는 지역 변수로 많이 선언하는 것을 새롭게 알게 되었다. 데이터 낭비를 줄이기 위해서 더 이상 사용하지 않을 변수라서 지역 변수로 선언해 주는 것 같았다. 앞으로는 데이터가 낭비되지 않도록 신경 써서 코드를 작성해야겠다.
개인적으로 조건문과 반복문을 이용한 알고리즘 문제가 가장 재미있다고 생각한다. 재미있는 수업이었다.
'HRD_훈련 > JAVA' 카테고리의 다른 글
[JAVA] 객체 지향 프로그래밍 (6일차) (0) | 2023.05.19 |
---|---|
[JAVA] 배열과 Random (5일차) (0) | 2023.05.19 |
[JAVA] 조건문 (4일차) (0) | 2023.05.17 |
[JAVA] 연산자(Operation) (3일차) (0) | 2023.05.17 |
[JAVA] 자료형과 변수 선언 (2일차) (0) | 2023.05.17 |