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번째 인덱스의 문자를 반환.