반복문
- 어떤 작업이 반복적으로 수행 되도록 실행 할 때 사용.
- 반복문의 종류
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 |