JAVA

[3회차-②] JAVA (반복문 while, for, break, continue)

킴크스 2021. 3. 25. 18:33

강의명 :  오픈프레임워크를 활용한 디지털 융합 SW엔지니어 양성 과정

강의 날짜 : 21.03.25

 

<반복문>

 

1. while문

 주어진 조건이 만족되는 동안 문장들을 반복 실행한다.

 

while (조건식)  //조건식이 참인동안 안의 문장을 실행한다.

{     

       문장;

}

//1부터 10까지의 합 구하기
public class LoopEx {

	public static void main(String[] args) {
		
		int num=1,sum=0; 
		
		while(num<=10) {
			sum+=num; //num이 sum에 누적이 된다.
			num++; 
		}
		System.out.println("1부터 10까지의 합은 "+sum+"입니다.");
	}
}

* while(true) -> 무한루프. 그러므로 사이트 같은 것은 일부러 무한루프를 사용한다.

 

2. do~while문

 

문장을 무조건 한 번은 실행이 되고 그 후에 반복 조건을 확인한다.

 

do

{

    문장;

}while(조건문)

//월을 입력받는 프로그램 
import java.util.Scanner;

public class CheckInput {

	public static void main(String[] args) {
		
		Scanner index=new Scanner (System.in);
		
        int month;
		
        do {
			System.out.print("올바른 월을 입력하시오[1-12] : ");//무조건 한 번은 입력 실행
			month=index.nextInt();
		}while (month<1||month>12); // 1~12 사이의 숫자가 아니면 반복
		
        System.out.println("사용자가 입력한 월은 "+month); //1~12 사이의 입력받은 숫자가 출력
	}

}

 

3. for문

 

정해진 횟수만큼 반복하는 구조

 

for (초기식 ; 조건식 ; 증감식) {

    반복문장;

}

 

※한 영역 안({ })에서 변수를 설정해주면 그 변수는 그 영역에서만 사용할 수 있다.

   영역을 벗어나면 그 변수는 사용할 수 없다.

 

//약수를 구하는 프로그램
import java.util.Scanner;

public class Divisor {

	public static void main(String[] args) {
		
		Scanner index= new Scanner(System.in);
		
		int n,i;
		
		System.out.print("양의 정수를 입력하시오 : ");
		n=index.nextInt();
		
		System.out.println(n+"의 약수는 다음과 같습니다.");
		
        for(i=1;i<=n;i++) {
			if(n%i==0) System.out.print(" "+i);//1부터 n까지의 수 중 n의 약수를 찾아 출력
		}
		
	}

}

 *이중 for문

//이중 for문 돌려서 문자 찍어내기
public class NestedLoop {

	public static void main(String[] args) {
		
		for(int y=0;y<10;y++) {
			for(int x=0;x<(y+1);x++) { // x는 0부터 y까지 반복해준다.
				System.out.print("*"); // 반복될 동안 *을 출력한다.
			}
			System.out.println(); //안의 for문이 끝나면 줄 바꿈
		} // y가 10번 돌 동안 [안의 for문+줄 바꿈]이 반복된다.
	}

}

 

4. break문

 

break문을  만나면 반복문을 탈출하게 된다.

//break문을 사용한 점수 입력 프로그램
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		
		int grade;
		int total=0;
		int count=0;
		
        Scanner index = new Scanner (System.in);
		
        while(true) { //무한루프
			
            System.out.print("점수를 입력하세요 : ");
			grade=index.nextInt();
			
            if(grade<0) break; //음수가 입력이 되면 반복문 탈출
			
			total+=grade; // 점수 누적
			count++; // 카운트 누적
		}
        
		System.out.println("평균은 : "+total/count); //평균 산출하여 출력
	}

}

5. continue문

 

continue를 만나면 반복문의 처음으로 돌아가 다시 반복된다.

//문자열 안에서 해당 문자의 개수를 세는 프로그램
public class ContinueEx {

	public static void main(String[] args) {
		
		String s="no news is good news";
		int count=0;
		
		for(int i=0;i<s.length();i++) { //변수.length() -> 문자열의 길이를 반환하는 함수
			if(s.charAt(i)!='n') //변수.charAt(i) ->문자열의 i번 인덱스에서 문자를 뽑아내는 함수
				continue; //n을 찾지 못하면 반복문의 처음으로 돌아간다.
			
			count++; //n을 찾으면 count를 누적한다.
		}
		System.out.println("문장에서 발견된 n의 개수 : "+ count);
	}

}

 

* 변수.length() -> 문자열의 길이를 반환해줌. 즉, 문자열에서의 문자의 개수를 반환(공백 포함).

* 변수.charAt(n) -> 문자열에서 n번째 인덱스의 문자를 반환.