자바의정석

기본기_자바의 정석_Ch04_반복문

Stater 2020. 10. 5. 00:04

반복문

- 어떤 작업이 반복적으로 수행 되도록 실행 할 때 사용.

- 반복문의 종류 

  for문 ,while문 , do-while문

  for문과 whil문은 구조가 유사하며 서로 변환이 가능

- 반복횟수를 알고 있는 경우 -> for문 추천

- 반복횟수를 알지 못하는 경우 -> while문 추천

 

for문

for( 초기화(1) ; 조건식(2); 증감식(4)){

   //조건식이 true일 경우에 실행될 문장 기재(3)

}

 

[ for문 진행순서 ] 

1. 초기화 진행

2. 조건식 검증

3. 실행될문장 실행

4. 증감식 순서 로 계속 반복한다.

 

[ 초기화 ] : 반복문의 사용될 변수를 초기화 하는 부분, 처음에 한번만 수행된다.

               보통 변수 하나로 for문을 제어하지만, 둘이상의 변수가 필요할 때는 (콤마,)를 구분자로 변수를 초기화

 

[ 조건식] : 조건식의 값이 true이면 계쏙해서 반복하고, 거짓이면 반복을 중단하고 for문을 벗어난다.

              즉 참인 동안 계속해서 반복, 조건식이 잘못 작성 될 경우에는 수행되지 않거나, 반복이 무한으로 반복되어                  주의요망

 

[ 증감식] : 반복문을 제어하는 변수의 값을 증가 또는 감소시ㅣ는 식, 매번 반복때마다 변수의 값이 즘감식에 의해서 점                진적으로 변화, 조건식이 거짓이 되면 for문을 벗어나 종료된다. 3배씩 증가(i*=3 )등 사용가능

package Chapter04_if;

public class for_test {

	public static void main(String[] args) {
		for(int i=0;i<=5;i++) 
			System.out.println(i);
			for(int i=1;i<=5;i++) 
				System.out.print(i);
				System.out.println();
				
	}
}

 1부터 5까지의 합 예제

package Chapter04_if;

public class sumTest {

	public static void main(String[] args) {
		int sum=0;
		
		for(int i=0;i<=5;i++) {
			sum +=i;
			System.out.printf("1부터 %2d 까지의 합은: %2d%n",i,sum);
		}
	}
}

for문 별찍기 

package Chapter04_if;

public class Ex4_forTest {

	public static void main(String[] arags) {
//		for(int i=0;i<5;i++) {
//			System.out.println("**********");
//		}
//		System.out.println("===========10개 5번 출력완료============");
//		for(int i=0;i<10;i++) {
//			System.out.print("*");
//		}
//		System.out.println();
		System.out.println("===========10개 for문으로 5번 출력완료============");
		for(int i =0;i<=5;i++) {
			for(int j=0;j<=5-i;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

[while문]

- for문 보다 while문은 구조가 간단하다. if 문처럼 조건식과 블록{} 만으로 구성

- 다만 if문과 달리 while문은 조건식이 참(true) 인동안 -> 즉 조건식이 거짓이 될 떄 까지 블럭 { } 내의 문장을 반복한다.

 

while( 조건식 (1)){

      //조건식의 연산 결과가 true인 동안 반복될 문장을 적는다. (2)

 

}

1. 조건식이 참이면 블록 안으로 들어가구 거짓 일 경우 while문을 벗어난다.

2. 블럭 문장을 수행하고 다시 조건식으로 돌아간다. 

 

 [  for문 while문 비교  ]

-만일 초기화이나 증감식이 필요하지 않으면 while문이 적합

- for문과 while문은 서로 변환이 가능하다.

 

 [ for문 ]

//초기식,조건식,증감식

for(int i=1;i<=10;i++){

System.out.println(i);

}

 

[ while문]

int i =1; //초기화

 

while(i<=10){//조건식

 System.out.println(i);

 i++;//증감식

}

//0부터 ~ 몇까지 더해야 100이 되는지 알아내는 코드

package Chapter04_if;

public class Ex4_13 {

	public static void main(String[] args) {
		int i =0;
		int sum=0;
		
		while(sum<100) {
			System.out.printf("%d - %d%n",i,sum);
			sum +=++i;
		}
	}
}

 

각자리의 숫자의 합을 구하는 예제

package Chapter04_if;

import java.util.Scanner;

public class Ex4_14 {

	public static void main(String[] args) {
		
		int num = 0,sum=0;
		System.out.println("숫자를 입력하세요(예:12345)>>");
		
		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine();
		num=Integer.parseInt(tmp);
		while(num!=0) {
			//num을 10으로 나눈 나머지를 sum에 더함
			sum+=num%10;//sum=sum+num%10;
			System.out.printf("sum=%3d num=%d%n",sum,num);
			num /=10; //num=num/10;; num을 10으로 나눈 값을 다시 num에 저장
		}
		System.out.println("각 자리수의 합:"+sum);
	}
}

 

[do-while문]

 

do (조건식){

//조건식이 참일 경우 실행될 문장 기재 ( 처음 한번으 무조건 실행)

}while(조건식); <--끝에 세미콜론 필수 ;

 

[랜덤숫자를 발생시켜서 맞을 떄까지 유도 하는 소스]

- 나중에 퀴즈 같은 프로그램 만들때 사용하면 유용할듯...

package Chapter04_if;

import java.util.Scanner;

public class Ex4_15 {

	public static void main(String[] args) {
		int input =0,answer=0;
		
		answer =(int)(Math.random()*100)+1;//1~100사이의 임의수 발생
		System.out.println("발생된 값은:"+answer);
		Scanner scanner = new Scanner(System.in);
		do {
			System.out.println("1~100가지의 사이의 정수를 입력하세요.");
			input = scanner.nextInt();
			if(input>answer) {
				System.out.println("더 작은 수로 다시 시도해보세요.");
			}else if(input<answer) {
				System.out.println("더 큰 수로 다시 시도해보세요.");
			}
		}while(input!=answer);
		System.out.println("정답입니다.");
	}
}

 

[ break문과 continue를 사용해서 메뉴판을 만들때 사용하면 좋을 것 같다. ]

package Chapter04_if;

import java.util.Scanner;

public class Ex4_18 {

	public static void main(String[] args) {
		
		int menu=0;
		int num=0;
		
		Scanner scanner = new Scanner(System.in);
		
		while(true) {
			System.out.println("(1) square");
			System.out.println("(2) square root");
			System.out.println("(3) log");
			System.out.println("원하는 메뉴 (1-3)를 선택하세요.(종료:0)>");
			
			String tmp = scanner.nextLine();//화면에서 입력받은 내용을 tmp에 저장
			menu = Integer.parseInt(tmp);//입력 받은 문자열(tmp)을 숫자로 변환
			
			if(menu==0) {
				System.out.println("프로그램을 종료합니다.");
				break;
			}else if(!(1<=menu && menu<=3)) {
				System.out.println("메뉴를 잘못 선택하셨습니다.(종료는:0입니다)");
				continue;
			}
			System.out.println("선택하신 메뉴는 "+menu+"번입니다.");
		}
	}
}

 메뉴기능 만들 떄 참고하면 좋을 것 같은 소스

package Chapter04_if;

import java.util.Scanner;

public class Ex4_20 {

	public static void main(String[] args) {

		int menu=0;
		int num=0;
		
		Scanner scanner = new Scanner(System.in);
		outer://while문에 outer라는 이름을 붙인다.
		while(true) {
			System.out.println("(1) square");
			System.out.println("(2) square root");
			System.out.println("(3) log");
			System.out.println("원하는 메뉴 (1-3)를 선택하세요.(종료:0)>");
			
			String tmp = scanner.nextLine();//화면에서 입력받은 내용을 tmp에 저장
			menu = Integer.parseInt(tmp);//입력 받은 문자열(tmp)을 숫자로 변환
			
			if(menu==0) {
				System.out.println("프로그램을 종료합니다.");
				break;
			}else if(!(1<=menu && menu<=3)) {
				System.out.println("메뉴를 잘못 선택하셨습니다.(종료는:0입니다)");
				continue;
			}
			
			for(;;) {
				System.out.print("계싼할 값을 입력하세요.(계산종료:0,전체종료는99)>");
				tmp=scanner.nextLine();
				num=Integer.parseInt(tmp);
				if(num==0)
					break;//계산종료 for문을 벗어난다.
				if(num==99)
					break outer;//전체종료, for문과 while문을 모두 벗어난다.
				switch(menu) {
				case 1:
					System.out.println("result="+num*num);
					break;
				case 2:
					System.out.println("result="+Math.sqrt(num));
					break;
				case 3:
					System.out.println("result="+Math.log(num));
					break;
					
				}
			}
		}
	}

	}
반응형

'자바의정석' 카테고리의 다른 글

Chapter01. 자바의 특징  (0) 2023.02.22
기본기_자바의 정석_Ch04_조건문  (0) 2020.10.03