[java] 기본 for 문

심심이·2024년 1월 22일
0

java

목록 보기
13/46
post-thumbnail

※ for 문의 형식

for(1.초기화; 2.조건식; 4.증감식) {
3.반복해서 실행할 문장;
}

▣ 순서

1) 초기화; // (int i = 0 ...) -i는 index의 약자

2) 조건식;

  • 조건식이 참(true): 반복해서 실행할 문장;을 실행하고 } 을 못빠져나간다.
  • 조건식이 거짓(false): 반복해서 실행할 문장;을 실행하지 않고 } 을 빠져나간다.

3) 조건식이 거짓이 될때까지 코드 실행
4) 증감식 // i++ i --

1 초기화식이 제일 먼저 실행된다.
2 조건식을 평가해서 true이면
3 실행문을 실행시키고, false이면 for문 블록을 실행하지 않고 끝나게 된다. 블록 내부의 실행문들이 모두 실행되면
4 증감식을 실행시키고
5 다시 조건식을 평가한다.

		for(int i = 1; i <= 7; i++) {
			System.out.println(i + ". hello world");
		}
        
        // 1. hello world
        // 2. hello world.. 를 7까지 반복

여러 방식으로 간단 for문 찍어보기


		for(초기화; 조건식; 증감식) {
			반복해서 실행할 문장
		}
		for(int i = 1; i <= 7; i++) {
			System.out.println(i + ". 안녕 java");
		}
		
		for(int i = 0; i < 10; i+=1) {  i+=1; ==> i = i+1; 와 같다.
			System.out.println((i+1) + ".안녕 java");
		}
		
		for(int i = 1; i < 10; i+=2) {
			System.out.println(i + ". 안녕 이클립스");
		}
		
		for(int i = 0; i < 10; i++) {
			System.out.println(++i + ". 안녕 이클립스"); 전위,후위연산자 기억하기!
		}
		
		for(int i = 1; i < 10; i+=2) {
			System.out.println( i + ". 안녕 Eclipse");
		}
		
		for(int i=0, j=0; i<10; i++, j+=2) {
			System.out.println((j+1) + ".안녕 오라클~");
			10번 반복 -> 찍기는 j=> 1,3,5,7,9,11,13,15,17,19 총 10번 반복해서 찍어냄.
		}

		for(int i = 10; i > 0; i--) {
			System.out.println(i+". 안녕 oracle");
		}
		
		for(int i = 10; i > 0; i-=1) {  i = i-1;
			System.out.println(i+". 안녕 스프링");
		}
		
		for(int i = 10; i> 0; i--) {
			if(i%2 != 0)   i % 2 은 i를 2로 나누었을 때의 나머지를 나타낸다.
				System.out.println(i+".안녕 spring");
			if가 하나뿐이면 {} 생략 가능
		}
		
		for(int i= 10; i>0; i-=2) {
			System.out.println((i-1)+".안녕하십니까?~~");
		}
		
		for(int i= 10; i>0; i-=2) {
			System.out.println((i-1)+".안녕하십니까?~~");
		}
		
		for(int i= 10; i>0; i--) {
			System.out.println(i-- +".안녕하십니까?~~"); 
		}
		
		for(int i= 0, j = 9; i < 5; i++,j-=2) {
			System.out.println(j + ".안녕하십니까?~~"); 
		}
		
		int i = 0; 초기화
		for(i = 0; i < 5; i++) { i가 5일때 빠져나옴(조건식이 false인 순간 빠져나감)
			System.out.println((i + 1) + ".길동");
		}
		
		System.out.println("반복문을 빠져나온 i값 :" + i);
		

조건식 증감식이 두번이나 되는줄은 해보지 않아서 몰랐는데 여러가지 경우의 수를 생각해봐야겠다..


반복문 + break;

break란 : 계속해서 반복하다가 break;를 만나면 멈추게 된다.

for(int i = 0; i < 10; i++) {
	if(i == 5) break; // i가 5가 되면 반복문 빠져나옴
    System.out.println(i+1);
} 

int cnt = 0;
for(;;) {
	System.out.println(++cnt + "번째 반복");
	if(cnt == 5) break; //반복문에서 break;를 만나면 가장 가까운 반복문을 빠져나간다. 
}
		

반복문 + continue;

for(int i = 1; i <= 10; i++) {
	if(i % 2 == 0) { //출력하고자 하는 값이 짝수라면
    	continue; 
    }
    System.out.print((i+1) +" ");
}

// i -> 0 -> (i+1) = 1 -> print
// i -> 1 -> (i+1) = 2 -> continue; -> print하지않고 패스한 채 다시 다음 for문
// i -> 2 -> (i+1) = 3 -> print
// ... 10번 반복

반복문에서 continue를 만나면 가장 가까운 반복문의 증감식으로 이동시켜준다.


3항 연산자 / string 문자열에 i 사용하기

for (int i = 0; i < 10; i++) {
// 	  if((i+1)%2 == 0) continue;
//    if(i<9) {
//    	System.out.print((i+1) + ",");
//    } else {
//  	System.out.print((i+1) + " ");
//  }
    String str = (i<9)?",":" ";
    System.out.println((i+1) + str);
}

		for(int i = 0; i < 10; i++) {
			if((i+1)%2 == 0) {
				continue;
			}
			String str = ((i+1) < 9 )?",":"";
			System.out.print((i+1) + str);
		}

삼항 연산자 문법 : 조건식?true:false

간단한 프로그램 만들기

누적해야할 시작 숫자 => 3
누적해야할 마지막 숫자 => 5
[실행결과] 3+4+5=12
누적해야할 시작 숫자 => 똘똘이
[경고] 올바른 정수만 입력하세요!! (끝내는게 아니라 다시 시작)
누적해야할 시작 숫자 => 3
누적해야할 마지막 숫자 => 345234543643643543
[경고] 올바른 정수만 입력하세요!! (끝내는게 아니라 다시 시작)
누적해야할 마지막 숫자 => 6
3+4+5+6=18

첫번째 코드

public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int sum = 0;
		String str = " ";
		for(;;) {
			try {
				System.out.println("누적해야할 시작 숫자 =>");
				int start_no = Integer.parseInt(sc.nextLine());
				
				System.out.println("누적해야할 마지막 숫자 =>");
				int end_no = Integer.parseInt(sc.nextLine());
					
				for(int i = start_no; i <= end_no; i++) {
					String add = (i<end_no)?"+":"=";
					str += i + add;
					sum += i;
				}
				
					
			} catch(NumberFormatException e) {
				System.out.println("[경고] 올바른 정수만 입력하세요!!");
				continue;
			}
			sc.close();
			break;	//for문을 빠져나간다.
		}
		
		
		System.out.println(str+sum);
		
		
		sc.close();
		System.out.println("프로그램종료");

-> 실행시켜 보니까 제대로 돌아가는데, 마지막 숫자를 잘못 입력하면 첫번째 숫자로 다시 돌아가서 첫번째 숫자부터 입력해야 하는 부분이 불편했다.
=>status 변수를 만들어서 마지막 숫자를 입력했을 때는 마지막 숫자만 다시 입력해서 이미 기입한 첫번째 숫자와 계산할 수 있게 바꾸었다.


public class Main_for {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String print = "";
        int sum = 0;
        int status = 1;

        int start_num = 0;
        int end_num = 0;
        while (true) {
            try {
                if(status == 1) {
                    System.out.println("누적해야할 시작 숫자: ");
                    start_num = Integer.parseInt(sc.nextLine());
                }
                status = 2;
                if(status == 2) {
                    System.out.println("누적해야할 마지막 숫자: ");
                    end_num = Integer.parseInt(sc.nextLine());
                }
                for (int i = start_num; i <= end_num; i++) {
                    if (i < end_num) {
                        print += i + "+";
                    } else {
                        print += i + "=";
                    }
                }
            } catch (NumberFormatException e) {
                switch (status) {
                    case 1 :
                        System.out.println("올바른 정수를 입력하세요!!");
                        break;
                    default:
                        System.out.println("올바른 정수를 입력하세요!!");
                        status = 2;
                }
                continue;
            }
            sc.close();
            break;
        }
        System.out.println(print + sum);
        sc.close();
        System.out.println("프로그램 종료");
        
    }

}

status 말고 좋은 방법을 찾아냈으면 좋겠다!

profile
개발하는 심심이

0개의 댓글

관련 채용 정보