Coding(Java)/Java(이론)2021. 8. 25. 20:00
반응형

[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==-1break;// 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
Posted by skywalker222