- 공유 링크 만들기
- X
- 이메일
- 기타 앱
반복문
-반복문의 종류
for 문
while 문
do - while 문
1)for 문
형태 : for (초기화; 조건식; 증감식 ) {}
.포함하고 있는 문장들을 정해진 횟수만큼 반복하게 해주는 문장
. 블럭{} 안에 있는 것을 반복해준다 ( 조건식을 충족하면 )
. for는 반복횟수가 정확하게 정해져 있다.
. 포함하고 있는 문장들을 정해진 횟수만큼 반복하게 해주는 문장
.작동 경로를 살펴보자 : 초기화를 처음 해준다 -> 조건식으로 가서 조건식이 만족하는지 본다. 조건식이 만족함 {} 여기있는 문장들을 실행해준다. 실행이 전부 끝나면 -> 증감식으로 가게 된다.
for(int i = 1; i <= 10 ; i++){
. for ( 선언 ; 만족해야 하는 조건식 ; 조건식을 만족하고 괄호에있는 식 처리하고 난뒤 증감식)
.초기화 : 조건식과 증감식에 사용할 변수 초기화
.조건식 : 연산결과가 true 이면 블럭안의 내용을 수행한다.
.증감식 : 변수를 증가/ 감소시켜 반복문을 제어한다.
System.out.println(i + " 번째 반복 " ) ;
초기화한 변수를 블럭 안{}에서 사용할 수 있다.
.i라는 변수가 1에서부터 10에서 까지 총 10번을 반복을 하겠다는 의미
{} 가로 식에 있는 조건을 다 끝내고 () 가로의 세번째 부분인 증감식으로 들어가게된다.
.i가 for문 밖을 벗어나게 되면 없는 변수가 된다 for문 안에서만 사용이 가능하다.
.변수를 사용할 때 꼭 초기화에서 사용된 변수를 조건식이랑 증감식에 사용할 필요는 없다.
.조건식이 참일때 반복이 되게 된다. 조건식이 참이 아니라 거짓이면 끝남.
}
.규칙이 있는 문장들을 효율적으로 작성하기 위해 반복문을 사용한다.
int sum = 0; -> 1부터 10까지 합계를 저장
sum += 1;
sum += 2;
sum += 3;
sum += 4;
sum += 5;
sum += 6;
sum += 7;
sum += 8;
sum += 9;
sum +=10;
//System.out.println(sum);
sum = 0;
for ( int i = 1; i <= 100; i++)
sum += i;
}
//System.out.println(sum);
//100에서부터 1까지 감소시키기
sum = 0;
for ( int i = 100 ; i >= 1 ; i--){
sum += i;
//System.out.println(sum);
//문제 // 1부터 100까지의 짝수의 합을 출력해 주세요,
sum = 0 ;
for ( int i = 2 ; i <= 100 ; i += 2 ){
sum += i;
}
System.out.print (sum);
sum = 0;
for(int = 1; i <= 100 ; i++){
if( i % 2 == 0) {
sum += i;
}
//1부터 100까지의 홀수의 합을 출력하시오.
sum = 0;
for(int i = 1; i <= 100; i += 2){
sum += i;
}
sum = 0;
for ( int i = 1 ; i <=100 ; i++ ){
if( i%2 ==0) {
sum += i;
for (int i = 1; i <= 100 ; i += 2 ){
sum += i;
}
//1부터 100까지의 홀수의 합 출력
sum = 0;
for ( int i = 1 ; i <= 100 ; i++){
if ( i%2 == 1 ) {
sum += i;
System.out.println (i) ;
}
}
System.out.println(sum);
// 구구단 출력
/*
2*1 = 2
2*2 = 4
2*3 = 6
2*4 = 8
.....
for ( int i = 1 ; i < 10 ; i++)
{
System.out.println( " 2 * " + i + "=" + 2 * i ) ;
}
for ( int i = 2; i <= 9 ; i++ ){
for (int j = 1 ; j <= 9 ; j++ ) {
System.out.println( i + " * " + j " = " + i*j );
i = 2,3,4,5,6,7,8,9
j = 1,2,3,4,5,6,7,8,9
// FOR 문을 만들때 안에서 규칙을 찾아야 한다.
}
}
//구구단을 가로로 출력하기
: 2 * 1 = 2 / 3 * 1 = 3 / 4 * 1 = 4 / 5 * 1 = 5 / 6 * 1 = 6......
2 * 2 = 4 / 3 * 2 = 6 / 4 * 2 = 8 / 5 * 2 = 10 / 6 * 2 = 12......
2 * 3 = 6 / 3 * 3 = 9 / 4 * 3 = 12 / 5 * 3 = 15/......
* "\t" 얘는 tap을 의미해서 4칸을 띄어쓰기 해준 문자와 같다.
두가지가 다르게 나오는데 두가지를 차이점을 비교하고 싶어.
for ( int i = 2 ; i <= 9 ; i++ ) {
for ( int j = 1 ; j <=9 ; j++) {
System.out.print( i + " * " + j + " = " + i * j + "\t" );
//* 위에 두번째 for문이 반복이 끝나고
}
System.out.println();
//* 얘가 나오면, 한줄을 띄어주네.
}
----------------------------> 그러니까 쉽게 생각해보면
for 문
for 문
이렇게 있으면 첫번째 for문에서 결정된 변수는 두번째 for문이 실행될 동안 계속
동일한 숫자가 나오며 변하지 않다가 두번째for 문의 반복이 끝나면 그때
다시 첫번째 for문으로 가서 거기의 변수가 변하고 그대로 다시 2번째 반복문을 실행하게 되는것.
2) WHILE 문
. WHILE (조건식 ) {}
.포함하고 있는 문장들을 조건식이 만족하는 동안만 반복하는 문장
.반복횟수가 정확하지 않은 경우에 주로 사용한다.
. while 문은 초기화와 증감식이 없고 조건식만 있다.
. while문은 조건식이 true 인 동안 블럭안에 있는 것을 반복함.
문제 ) a라는 변수에 2씩 곱할건데 몇번을 곱해야 1000이상이 될까 ?
int a = 1;
int count = 0;
while ( a < 1000 ) {
a *= 2;
count++;
System.out.println(count + " : " + a );
}
}
}
3) Do-while 문
. do {} while (조건식);
- 최소한 한번의 수행을 보장한다
-조건식이 false라고 하더라도 1번은 꼭 수행되겠지?
// 숫자 맞추기 게임
//
System.out.println("Hello World");
int answer = (int)(Math.random()*100) + 1 ;
/* 1부터 100까지의 랜덤 수 */
int input = 0;
Scanner s = new Scanner(System.in);
do{
System.out.print("1 ~ 100 까지의 수를 입력해주세요>");
input = Integer.parseInt(s.nextLine());
if(answer < input){
System.out.print( input + "보다 더 작습니다" );
}else if(answer > input){
System.out.print ( input + "보다 큽니다" );
}
else{
System. out.println( "정답입니다. ");
}
}while ( input != answer );
}
}
//사용자가 입력을 해야지만 이게 정답인지 아닌지 알 수 있다.
//초기화와 증감식이 있느냐 없느냐의 차이가 FOR 와 WHILE
// for(int i = 1 ; i <= 9 ; i++ ){
for (int j = 2; j <= 9, j++ ){
System.out.print(j + " * " + i + " = " + i * j + "\t' );
}
System.out.println();
}
// WHILE 문으로
int i = 1 ;
while( i <= 9 ) {
int j = 2;
while ( j < = 9 ) {
System.out.print(
System.out.print(j + " * " + i + " = " + i * j + "\t" );
j++
} System.out.println():
i++;
}
}
4) 이름붙은 반복문
int i ;
outer : for(i=2, i <=9, i++){
for(int j = 1; j<0; j++){
if(j==5){
break; -> 가장 가까운 반복문 하나를 빠져나간다.
break대신 break outer; 이렇게 있으면 outer문을 빠져나오는것
. continue; // 가장 가까운 반복문의 현재 반복회차를 빠져나간다.
.break; 대신 continue; 를 쓸 수 있는데 이거는 현재 돌고 있는 현재회차만 종료시키고 다음으로 넘어감
1,2,3,4,6,7,8,9 (5만 건너띄는것 )
- continue outer; // outer 라는 이름의 현재 반복회차를 빠져나간다. outer 를 건너띄는것
break와 continue 의 차이를 잘 알아두기
}
}
System.out.println(i + " * " + j + "=" + i * j);
}
System.out.println();
}
5) 문제 풀기 ( * 모양 만들기 )
모양 만들기
*****
*****
*****
첫번째
int i ;
for ( i = 1; i <= 3 ; i++){
for (int j = 1 ; j <= 5; j++ ){
System.out.println("*"); ---. 요부분이 print 가 아니라 println이기 떄문에 띄어쓰기를 하게 되어서 별이 가로로 다섯개가 아니라 세로로 다섯개가 나오게 된다.
}
System.out.println();
맞는답
int i ;
for ( i = 1; i <= 3 ; i++){
for (int j = 1 ; j <= 5; j++ ){
System.out.println("*");
}
System.out.println();
문제 ) /* //과제 :
System.out.println("*");
System.out.println("**");
System.out.println("***");
System.out.println("****");
System.out.println("*****");
// 원하는것 5번을 반복하고 반복할때마다 별이 한개씩 증가해야한다.
/* //과제 :
System.out.println("*****");
System.out.println("****");
System.out.println("***");
System.out.println("**");
System.out.println("*");*/
for (int i = 0; i < 6; i++){
for(int j = 5; j > i ; j--){
System.out.print("*");
}
System.out.pri
댓글
댓글 쓰기