반복문
ex) 시험에 합격할 때까지 ...
-> 시험에 계속 응시한다.라고 가정하자
Java로 이 과정을 반복문(loop statement)라고 표현가능하다
java의 반복문에는 for문 while문 do ~while문이 있다.
for문
for(초기문; 조건문; 증감문)
{
문장;
문장; -----> 블록 안의 문장을 순서대로 실행
}
sample1 for문 사용하기
package chap06;
public class Sample1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 1; i <= 5; i++) { ----- 변수 i의 값을 1개씩 증가시키면서, i<=5가 거짓(false)이 될 때까지
System.out.println("반복하고 있습니다."); 반복됩니다.
}
System.out.println("반복이 끝났습니다.");
}
}
실행결과
반복하고 있습니다.
반복하고 있습니다.
반복하고 있습니다.
반복하고 있습니다.
반복하고 있습니다.
반복이 끝났습니다.
총5번실행된다.
변수를 반복문 내에서 사용하기(반복횟수 출력)
package chap06;
public class Sample2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 1; i <= 5; i++) {
System.out.println(i +"번째 반복입니다.");
}
System.out.println("반복이 끝났습니다.");
}
}
실행 결과
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
반복이 끝났습니다.
for문 응용
package chap06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample3 {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
System.out.println("몇 개의 *를 출력 하시겠습니까?");
BufferedReader br = new BufferedReader( new InputStreamReader(System.in)) ;
String str = br.readLine();
int num = Integer.parseInt(str);
int i;
for(i=1; i<=num; i++)
{
System.out.print("*"); println은 다음줄로 넘어가지 때문에 사용하지 않았다.
}
}
}
몇개의 *를 출력 하시겠습니까?
8
******** 입력한 수만큼 출력된다.
sample4 1부터 입력한 숫자까지 합 구하기
package chap06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample4 {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
System.out.println("숫자 몇까지 합을 구하시겠습니까?");
BufferedReader br = new BufferedReader( new InputStreamReader(System.in)) ;
String str = br.readLine();
int num = Integer.parseInt(str);
int sum = 0;
int i ;
for(i=1; i<=num; i++)
{
sum += i;
}
System.out.println("1부터" + num +"까지 합은" + sum + "입니다.");
}
}
숫자 몇까지 합을 구하시겠습니까?
10
1부터10까지 합은55입니다.
While문
for문 말고 while문이 있다.
while문
while(조건){
문장;
... -----> 블록 안의 문장을 순서대로 반복 실행한다.
}
while문은 조건이 참인경우에만 지정한 문장을 여러번 반복 실행 합니다.
Sample5.java While문을 사용하기
package chap06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample5 {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
int i = 1;
while(i <= 5)
{
System.out.println(i + "번째 반복입니다.");
i++; ----> 이부분을 빼먹으면 무한 루프가 발생되니 주의해야 한다.
}
}
}
do ~ while문
do ~ while문이 while문과 다른 점은
조건을 판단하기 전에 블록 안의 코드를 실행시킨다, 적어도 한번, 반드시 블록 안의 코드가 실행된다는 점이다.
ex)
do
{
시험에 응시한다.
}
while(시험에 합격하지 못했음);
이 반복문은 시험에 계속 응시하도록 지시하는 반복문이다. 시험이 이미 합격해도 최소 1번은 응시해야한다는 점
sample.java do ~ while문 사용하기
package chap06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample6 {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
int i= 1;
do
{
System.out.println(i + "번째 반복입니다."); ---- i<=5가 거짓이면 반복을 종료한다.
i++;
}
while(i <= 5);
}
}
실행결과
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
5번째 반복입니다.
중첩문
for문 중첩하기
조건문, 반복문안에는 여러 문장을 중첩시킬 수 있다.
예를 들어, for문 안에 for문을 사용할 수 있다.
for문 중첩
for(식 1-1; 식 2-1; 식 3-1;){
...
for(식 1-2; 식 2-2; 식 3-2;){
}
중첩문 예제 코드
package chap06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample6 {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
for(int i=0; i<5 ;i++)
{
for(int j=0;j<3; j++)
{
System.out.println("i는" + i + "\tj는" + j);
}
}
}
}
변수 i의 값을 1 증가시킴
- 변수 j의 값을 1증가시킴
- 변수 j의 값을 1증가시킴
- 변수 j의 값을 1증가시킴
변수 i의 값을 1 증가시킴
- 변수 j의 값을 1증가시킴
- 변수 j의 값을 1증가시킴
- 변수 j의 값을 1증가시킴
break 문
처리의 흐름을 강제로 종료 시킨다. 그블록에서 즉시 빠져나온다.
sample9.java break문으로 블록빠져나오기
package chap06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample8 {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
System.out.println("1-10중 정수를 입력하세요");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num =Integer.parseInt(str);
int i;
for(i=1; i<=10; i++)
{
System.out.println(i +"입니다.");
if(i == num)
break; 강제로 빠져 나오게 된다. i변수와 입력받은 num값이 같을 경우 같지 않다면 그만큼 반복
}
}
1-10중 정수를 입력하세요
2
1입니다.
2입니다.
continue 문
반복처리를 건너 뛴 다음, 블록의 시작 위치로 돌아가서 다음 작업을 진행하라
continue문으로 블록 시작 부분으로 돌아가기
package chap06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample9 {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
System.out.println("건너뛸 정수를 입력하세요(1~10)");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num =Integer.parseInt(str);
int i;
for(i=1; i<=10; i++)
{
if(i == num)
continue; ---- i가 num과 같게 되면 입력받은 값을 건너뛰게 된다. 그다음 맨처음의 블록으로 돌아간다.
System.out.println(i +"입니다."); --> num이 입력받은 것은 실행되지 않게 된다.
}
}
}
실행결과
건너뛸 정수를 입력하세요(1~10)
3
1번째 처리입니다.
2번째 처리입니다.
4번째 처리입니다.
5번째 처리입니다.
6번째 처리입니다.
7번째 처리입니다.
8번째 처리입니다.
9번째 처리입니다.
10번째 처리입니다.
예제1) 다음과 같이 화면에 출력하는 코드를 작성하라.
1~ 10까지의 짝수를 출력합니다.
2
4
6
8
10
public class Ex01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("1 ~ 10까지 짝수를 출력합니다.");
for(int i = 1; i<=10; i++)
{
if(i%2 == 0)
System.out.println(i);
}
}
}
예제2) 키보드로 정수를 입력받아서, 그 수가 소수이닞 여부를 판단하는 코드를 작성하라
2이상의 정수를 입력하십시오.
7
7은 소수입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Ex05 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("2이상의 정수를 입력하십시오");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num = Integer.parseInt(str);
for(int i =2 ; i <=num; i++ )
{
if(num == i )
{
System.out.println(num +"은 소수입니다..");
break;
}
else if(num % i == 0)
{
System.out.println(num +"은 소수가 아닙니다.");
break;
}
}
예제3) 탭 문자(\t)를 사용해서 다음과 같이 구구단을 화면에 출력하라
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
public class Ex03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 1; i <= 9 ; i++)
{
for(int j = 1; j <= 9; j++)
{
System.out.print((i*j)+"\t");
}
System.out.print("\n");
}
}
}
예제4) 다음과 같이 화면에 출력하는 코드를 작성하시오.
public class Ex04 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
for(int i = 1; i <=5; i++)
{
for(int j = 0; j < i; j++ )
{
System.out.print("*");
}
System.out.println("\n");
}
}
}
'프로그래밍 > java' 카테고리의 다른 글
클래스(클래스, 객체, 필드, 메소드,getter&&setter) (459) | 2017.08.26 |
---|---|
배열 (494) | 2017.08.25 |
조건문(if, else ~if, switch문) (491) | 2017.08.23 |
컴퓨터와의 기본적인 소통수단(1) 연산자, 형변환, 키보드 입력 (502) | 2017.08.23 |
2. JAVA프로그래밍이란(2) (505) | 2017.08.21 |