안녕하세요~~ 오늘은 while문에 대해서 알아볼려구 합니다!
잘 보고 따라오시기 바래여~👇👇
while 문이란?
while문은 곧바로 괄호안에 선언된 조건문을 판별하여 true인경우 블록안의 실행문을 처리합니다.
다시 조건문을 반복하여 판별하고, 조건문의 결과가 false이면 while블록을 벗어나게 됩니다!
(조건문) 안에는 다양한 값을 넣을 수 있습니다.
- a>0 //a변수가 0보다 클 동안 while문을 실행한다
- 1 // 1은 true의 값으로 무한 루프
- true, false // boolean t=true , boolean t= false 등과 같이 변수에 담아서 사용 가능
while문의 가장 큰 장점이 무한루프 입니다! 특정 프로그램을 짜다보면 무한루프를 만들어 논 다음 특정 입력이나 조건을 통해서 빠져나오게 프로그램을 짜게 되는데 이럴때는 for문보다 훨씬 효율적으로 사용할 수 있습니다!
예제 1) 가장 기본적인 while 문
package hello;
public class EX7 {
public static void main(String[] args) {
int n=10;
while(n>0) {
System.out.println("n="+n); //반복하는 동안 n의 값을 출력
n--; //반복을 통해서 n의 값을 하나씩 감소시킴
}
System.out.println("while 문을 벗어난 후 n="+n);
}
}
n=10 n=9 n=8 n=7 n=6 n=5 n=4 n=3 n=2 n=1 while 문을 벗어난 후 n=0 |
while문에 n은 0보다 크다는 조건을 통해 실행시켜주고 초기값이 10이였던 n은 n--실행문을 만나서 감소하게 되죠!
그러다 n--로 인해 n이 0이되는 순간 while문의 조건은 n이 0보다 크다는 조건에 부합하지 않으면서 while문이 종료하게됩니다!
예제 2) 중첩 while 문 구구단
package hello;
public class EX8 {
public static void main(String[] args) {
System.out.println("\n\t\t\t\t 구 구 단");
System.out.println("\t\t\t\t========");
int index = 1;
while(index <10) {
int in =2;
System.out.println("\t");
while(in<10) {
System.out.print(in + "X" + index + "=" + in * index +" " );
in = in + 1;
}
index = index + 1;
System.out.println("");
}
}
}
구 구 단 ======== 2X1=2 3X1=3 4X1=4 5X1=5 6X1=6 7X1=7 8X1=8 9X1=9 >> 첫행 출력 2X2=4 3X2=6 4X2=8 5X2=10 6X2=12 7X2=14 8X2=16 9X2=18 >> 그 다음 행 출력 2X3=6 3X3=9 4X3=12 5X3=15 6X3=18 7X3=21 8X3=24 9X3=27 2X4=8 3X4=12 4X4=16 5X4=20 6X4=24 7X4=28 8X4=32 9X4=36 2X5=10 3X5=15 4X5=20 5X5=25 6X5=30 7X5=35 8X5=40 9X5=45 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36 7X6=42 8X6=48 9X6=54 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49 8X7=56 9X7=63 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64 9X8=72 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81 |
<문제풀이>
2X1=2 3X1=3 4X1=4 5X1=5 6X1=6 7X1=7 8X1=8 9X1=9 2X2=4 3X2=6 4X2=8 5X2=10 6X2=12 7X2=14 8X2=16 9X2=18 |
// 중첩 while문에서 첫번째 while(외부) - 행의 수를 나타냄 (1행....9행)
// 두번째 while(내부) - 행에 들어가는 데이터 수를 나타냄 (1행의 9개 데이터)
2개의 행으로만 살펴봤을때 구조는 in x index = in*index 로 나타남
index는 1번째 줄에는 1 / 2번째 줄에는 2
즉, 중첩 while문에서의 외부 while문을 따라감
외부 while에 초기 값이 2/ 참으로 실행되었을때 내부 while이 9번 돌게된다.
이는 행에서 1~9까지 숫자가 변경하는 in과 동일함을 볼 수 있다.
내부 while이 한번 실행하고 나서는 in이 1씩 증가하고 다시 외부 while문으로 올라올때
index에 초기값으로 2를 지속적으로 넣어주면 다음과 같은 구구단이 표현된다.
그렇기에 외부 while에는 index가 내부에는 in으로 변수의 조건을 두게 된 것이다.
do while 문이란?
while 문과 유사한 기능을 가지고 있으며, 단지 차이점은 do~while 문은 마지막에 조건식을 판별하므로, 적어도 do문 아래의 블록문장을 한번 수행한다.
package hello;
public class EX10 {
public static void main(String[] args) {
int n = 10;
do {
System.out.println("n = " + n);
n-- ;
} while(n > 0);
System.out.println("do~While 그룹을 벗어난 후 n = " + n);
}
}
n = 10 n = 9 n = 8 n = 7 n = 6 n = 5 n = 4 n = 3 n = 2 n = 1 do~While 그룹을 벗어난 후 n = 0 |
do를 만나서 n의 대한 결과를 먼저 출력하고 n--를 만나서 n의 값을 감소시킨다.
이후 while을 만나서 n이 0보다 냐는 조건에 참이기에 do를 지속적으로 반복한다. n이 n--를 만나 0이 되는순간
while의 조건이 거짓임으로 while문을 빠져나오게 된다.
break 문
• break 문은 switch 문장에서 문장의 흐름을 막아주는데 사용되며, 또한 반복문의 블록을 빠져나가는데 사용
• 또한 break 문은 반복 블록 내부에 선언되어서 블록을 끝내주거나, 아니면 프로그램의 제어를 다음 문장으로 넘겨서 다시 시작해주는 역할
continue 문
• continue문은 어떤 순환하는 문장 속에서 현 단계의 반복을 중단시키고 다음의 새로운 반복 단계를 위한 조건의 검색 부분으로 되돌아감 즉 continue문을 만나면 루프 내의 문장을 더 이상 실행하지 않고 다음 과정으로 이동
• for 문에서는 조건의 증감식을 다시 수행하게 하고, while문이나 do~while문에서는 조건식을 다시 체크
• continue 문을 만나는 지점에서 블록를 한번 수행한 것으로 간주
• 따라서 break문은 블록를 완전히 벗어나게 하지만 continue문은 실행을 중단하고 조건검색으로 되돌아가서 조건이 만족하면 다시 반복문을 실행
• continue문은 for문, while문 그리고 do~while문 등에서는 사용이 가능하나 switch문에서는 사용할 수 없음
• continue문은 break 문처럼 레이블을 붙일 수 있으며, continue문이 선언된 블록을 빠져나가서 레이블이 선언된 위치로 이동하여 다음을 수행
return 문
• return문은 메소드의 수행을 종료하고 프로그램 수행제어를 호출한 쪽으로 돌아가게 함
• return 문에 인수가 없이 선언될 경우 return 문이 발생한 시점에서 현재 실행되는 프로그램이 종료
여기까지 while문에 대해서 알아보고 추가로 점프문에 대한 설명을 해보왔습니다! 이해하기 어려운 부분이 있다면 댓글로 남겨주시면 설명해드리겠습니다! 감사합니다 😆
'java > 기본 문법' 카테고리의 다른 글
클래스(class)란? 클래스의 구성 (0) | 2023.01.24 |
---|---|
객체 지향이란? 객체 지향 프로그래밍 (0) | 2023.01.23 |
java_기본 문법 - Scanner, InputStream, BufferedReader (0) | 2021.05.09 |
Java_기본문법 - (switch 문) (0) | 2021.05.05 |
Java_기본문법 - (if - if else- else if) (0) | 2021.05.03 |