[Java] 10.while문
while문은 반복문 중 하나로 구성은 다음과 같고
while(조건식) { 실행문 } |
조건식이 '참'인 동안에만 실행된다(조건식을 생략하면 기본값은 true이다).
주의할 점은 실행문을 잘못 작성하면 무한루프에 빠질 수 있다는 점이다.
다음은 while문을 이용해 문자를 여러번 출력하고 수의 합을 구하는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
package mymain;
public class _4_while문1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n=0;
//조건식을 생략하면 기본값은 true
for( ;n<=3 ; ) {
System.out.println("안녕");
n++;
}
n=0;//초기식
while(n<3) {
System.out.println("while:안녕");
n++;//증가식
}
//10까지 합 구하기
int s=0;
int i=0;
while(i<=10) {
s=s+i;//누적식
i++;//증가식
}
System.out.printf("1부터 10까지의 합: %d\n", s);
//for : 반복횟수를 정확하게 알 때 사용
//while : 반복횟수를 모를 때 사용
}
}
|
cs |
위 프로그램의 실행결과는 다음과 같다.
안녕 안녕 안녕 안녕 while:안녕 while:안녕 while:안녕 1부터 10까지의 합: 55 |
문자출력부분은 다음과 같고
int n=0; //조건식을 생략하면 기본값은 true for( ;n<=3 ; ) { System.out.println("안녕"); n++; } n=0;//초기식 while(n<3) { System.out.println("while:안녕"); n++;//증가식 } |
'안녕' 출력부분은 for문을 사용했고, 'while안녕' 출력부분은 while문을 사용했다.
while문의 조건식은 n<3이고, n은 0에서부터 1씩 증가한다(n++). n=0, n=1, n=2인 경우 조건식이 참이므로 'while안녕'문자가 총 3번 출력된다. n=3인 경우 조건식을 만족하지 않으므로 while문 실행이 중단된다.
*while문 안에 n++식이 없으면 무한루프에 빠지게 된다.
숫자의 합 부분은 다음과 같고
//10까지 합 구하기 int s=0; int i=0; while(i<=10) { s=s+i;//누적식 i++;//증가식 } System.out.printf("1부터 10까지의 합: %d\n", s); //for : 반복횟수를 정확하게 알 때 사용 //while : 반복횟수를 모를 때 사용 |
while문의 조건식은 i<=10이고, s=0, i=0인데 while문 안에서 s=s+i로, i는 1씩 증가(i++)로 되어있다. i가 1씩 증가하므로 i=10일때까지만 실행되고 i=11일 때는 거짓이 되므로 while문 실행이 중단된다.
실행결과는 1부터 10까지의 합인 55이다.
다음은 문자를 입력받아 엔터(enter)키를 누르면 입력한 문자가 그대로 출력되는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package mymain;
public class _4_while문2 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
int ch;//입력받은 문자를 저장할 변수
System.out.println("종료하시려면 Ctrl+Z를 누르세요");
int count=0;
//무한루프
while(true ) {
//강제종료시(Ctrl+Z)누를 때 -1을 반환한다
ch=System.in.read();//키보드 버퍼로부터 1바이트 읽어오기
if(ch==-1) break;// break: 반복문(while) 탈출문
count++;//문자 1개를 읽어올 때마다 증가
//엔터 1회당 문자 2개
//읽은값(문자)를 화면에 출력
System.out.printf("%c", ch);
}//end-while
System.out.printf("while문의 반복횟수: %d\n", count);
System.out.println("--Program End--");
}
}
|
cs |
위 프로그램은 입력에 따른 출력을 하며 그 실행결과는 다음과 같다.
1234go! 1234go! while문의 반복횟수: 9 --Program End-- |
1234bufgo! 1234bufgo! while문의 반복횟수: 12 --Program End-- |
*위 프로그램은 -1을 입력받으면 종료하게 되어있는데 종료시키려면 직접 -1을 입력하는 것이 아니라 Ctrl+Z키를 눌러야 한다. 이 키(Ctrl+Z)가 -1을 반환시킨다. 또한 엔터(enter)키는 한 번 입력할 때마다 두 개의 문자를 사용한 것으로 간주된다.
위의 실행결과에서 1234go!(7개문자)를 입력하고 엔터(2개문자)를 입력한 후 Ctrl+Z를 눌러 종료시켜서 while문의 반복횟수가 9로 나왔다. 같은 방법으로 아래의 실행결과에서 1234bufgo!(10개문자)를 입력하고 엔터(2개문자)를 입력한 후 Ctrl+Z를 눌러 종료시켜서 while문의 반복횟수가 12로 나왔다.
다음의 프로그램은 (텍스트)파일 전체(또는 코드 전체)를 출력하고 총 글자 수도 출력하는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package mymain;
import java.io.FileReader;
public class _4_while문3 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//파일읽기 객체 생성=>파일 열기
FileReader fr=new FileReader("src/mymain/_4_while문3.java");
//코드작성
int ch;
int count=0;
while(true) {
//파일의 끝을 만나면 -1반환
ch=fr.read();//현재 파일위치에 있는 문자 1개를 읽어온다.
//파일의 끝이면 탈출(while문 종료)
if(ch==-1)break;
count++;
System.out.printf("%c", ch);
Thread.sleep(10);
}//end-while
System.out.println();
System.out.printf("읽어온 문자수: %d(개)\n", count);
//닫기
fr.close();
}
}
|
cs |
이 프로그램은 앞서 말했듯이 코드를 출력하고, 문자수를 출력하는 프로그램이다.
이 프로그램 코드의 문자수는 총 675개이고, 실행할 때 FileReader라는 파일읽기 객체를 생성해야 한다.
먼저 FileReader입력하고 Ctrl+Space키를 누른다. 그러면 다음과 같이 뜰 것이고
FileReader를 선택하면 된다. 마지막으로 실행을 종료할 시점에 .close()를 입력한다.
'Coding(Java) > Java(이론)' 카테고리의 다른 글
[Java] 12. 다중반복문, break&continue label (0) | 2021.08.31 |
---|---|
[Java] 11. do-while문, continue문 (0) | 2021.08.30 |
[Java] 9. for문 (0) | 2021.08.24 |
[Java] 8. switch문 (0) | 2021.08.23 |
[Java] 7. if문 (0) | 2021.08.23 |