개발 공부/JAVA

반복문 - for문/ while문

공부하는개발자_ 2023. 5. 17. 12:12

반복문

for문, while문, do-while문

 

for문

 

중첩for문

바깥for문을 한번 실행할 때마다 중첩된 for문은 지정 횟수만큼 반복하고 다시 바깥for문으로 돌아감.

 

 

 

while

for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우에 계속 반복하고 false가 되면 반복을 멈추고 while문을 종료함.

 

 

 

break

반복문을 중지하거나, 조건문인 switch문을 종료할 때 사용.

 

continue

for문, while, do-while문에서만 사용됨.

반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break와 다름. 특정 조건을 만족하는 경우 continue문을 실행해서 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어감

 

반복문이 처리되는 순서

 

 

 

//WELCOME 5번 출력하시오

for(int i=0; i<5; i++) {
System.out.println(i+":WELCOME");
}

 

//1,2,3,4,5 를 출력하시오

 

for (int i=0; i<5; i++) {

System.out.println(i+1);

 

 

//11,12,13,14,15 를 출력하시오

 

for (int i=10; i<15; i++) {

System.out.println(i+1);

 

 

//1,11,21,31,41 를 출력하시오

for (int i=0; i<5; i++) {

if(i>0) {

System.out.println(",");

}

System.out.print((i*10)+1);

}

System.out.println();

 

//A, B, C, D, E, F,....X,Y,Z를 출력하시오

for (char i='A'; i<='Z'; i++ ) {

System.out.println(i);

}

 

 

//피보나치 수열 20개를 출력하시오: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...

int bb = 1; //전전수

int b = 0; //전수

int current; //현재수

for(int i=0; i<20; i++) {

current = bb+b; //1

System.out.println((i+1)+"번째:"+current);

bb = b;

b= current;

}

 

*규칙과 반복되는 구문*
current = bb+b; //1
System.out.println(current);
bb = b; // 전전수 = 전수;
b= current; // 전수 =현재수;
current = bb+b; //1 현재수 = 전전수+전수;

System.out.println(current);

bb = b;

b= current;

current = bb+b; //2

System.out.println(current);

 

bb = b;

b= current;

current = bb+b; //3

System.out.println(current);

 

//1~100까지 출력하시오. 단, 7의 배수는 출력하지 않는다
for (int i=1; i<=100; i++) {
if(i>1) {
System.out.println(",");
}
// if(i%7 !=0) { //7의배수 : 7, 14, 21,
// System.out.println(i);
//
// }

if(i%7 ==0) {

continue;

}

System.out.println(i);

}

 

 

//1~100까지 출력하시오. 단, 짝수는 출력하지 않는다

for (int i=1; i<=100; i++) {

if(i>1) {

System.out.println(",");

}if(i%2 ==0) {

continue;

}

System.out.println(i);

for (int i=1; i<=100; i+=3) {

if(i>1) {

System.out.println(",");

System.out.println(i);

}

 

 

//1~100까지 합을 출력하시오.

case1)
int sum=0;
for (int i=1; i<=100; i++) {
//sum = sum + i;
sum += i;
}
System.out.println("1~100합:"+sum);


case2)
for(int i=1,sum=0; i<100; i++) {
}

 

 

 

 

//1~100까지의 숫자들의 홀수합, 짝수합을 출력하시오

int sumOdd = 0; //홀수합

int sumEven =0; //짝수합

for(int i=1; i<=100; i++) {

if(i%2==1) { //홀

sumOdd+=i; //sumOdd = sumOdd +i;

}else { //짝

sumEven +=i;

}

} System.out.println("홀수합" +sumOdd);

System.out.println("짝수합" +sumEven);

 

 

 

//--구구단 : 2단~5단까지 (*1~*9까지) 출력하시오

int dan = 2;

System.out.println(dan*1);

System.out.println(dan*2);

System.out.println(dan*3);

System.out.println(dan*4);

//:

System.out.println(dan*9); 

for(int i=1; i<=9; i++) {

if(i>1) {

System.out.println(",");

}

System.out.print(dan*i);

}

System.out.println();

 

2단~5단까지 반복
for(int dan=2; dan<=5; dan++) {
for(int i=1; i<=9; i++) {
if(i>1) {
System.out.print(",");
}
System.out.print(dan*i);
}
System.out.println();
}
}
}

 

 

 

//8의 배수는 출력하지 않는다

//25이상인 경우 더 이상 출력하지 않는다

boolean flag = true;

out: for(int dan=2; dan<=5; dan++) {

in: for(int i=1; i<=9; i++) {

if(dan*i>=25) {

//dan = 100;

//break;

//break out;

}

if(dan*i % 8 == 0){

continue;

}

if(i>1) {

System.out.print(",");

}

System.out.print(dan*i);

}

System.out.println();

}

}

}

 

 

 

 

 

 

 

while문

 

int i = 0;
while(i<5){
System.out.println("WELCOME");
i++;

 

//while로 1,11,21,31,41 출력

int ig=0;

while (ig<5) {

System.out.println((ig*10)+1);

ig++;

}

 

//while로 A~Z출력

char io='A';

while (io<='Z') {

System.out.println(io);

io++;

}

 

// 1~10까지 출력하시오. 단 iw=0;으로 시작하는경우

예시1)

int iw=0;

while (iw<10) {

iw++;

System.out.println(iw);

}

 

예시2)

iw=0;

while(++iw<=10) {

System.out.println(iw);

}

System.out.println();

=>값을 먼저 증가시키고, 출력한다는 것! 예시1과 2 같은 결과.

for (int i=0; i<10;) {

i++;

System.out.println(i);

}

=> 예시1을 for문으로 출력해 본 결과. 허나, while문을 사용하길 권장.  

import java.util.Scanner;

public class Test {

public static void main(String[] args) { 

Scanner sc = new Scanner(System.in);

 

while(true) {

System.out.println("값을 입력하세요. 종료하려면 q를 입력하세요");

//키보드로부터 입력

String line = sc.nextLine();

System.out.println("입력한 값은" + line +"입니다");

if("q".equals(line)) {

break;

}

}

 

String line;

do {

System.out.println("값을 입력하세요. 종료하려면 q를 입력하세요");

//키보드로부터 입력

line = sc.nextLine();

System.out.println("입력한 값은" + line +"입니다");

}while(!"q".equals(line));
=> 무조건 수행해야할 구문이 있는경우 do while문 사용.

 

int num;

for(num=10; num<10; num++){

System.out.println(num);

}

num=10;

while(num<10) {

System.out.println(num);

num++;

}

 

 

do {

System.out.println(num);

num++;

}while(num<10);

}