/*
*
* 반복문
* - 특정 조건에 따라 지정된 범위의 문장들을 반복 실행하는 문
* - for문, while문으로 구분됨
*
* 1. for문
* - 가장 기본적인 반복문
* - 반복 횟수가 정해져 있는 경우에 주로 사용
* - 초기식, 조건식, 증감식의 위치가 정해져 있어, 초보자가 익히기 쉬움
* - 초기식 : 반복 횟수를 판별하기 위한 조건식에 사용 될
* 제어변수를 선언하거나 초기화하는 문장
* - 조건식 : 반복 여부를 결정하기 위한 조건식
* => if 문과 마찬가지로 true 일 때 블록 내의 문장을 실행하고
* false 일 때 for 문을 종료하고 빠져나감
* - 증감식 : 반복을 위한 조건식에 맞춰 초기식에서 초기화한 제어변수들
* 증가 또는 감소시키는 문장
*
* <기본 문법>
* for(초기식; 조건식; 증감식) {
* // 조건식 결과가 true 일 때 반복 실행 할 문장들...
* }
*
*/
// " x : Hello, World" 문자열을 10번 반복 출력 (x는 현재 반복 횟수 )
System.out.println("1 : Hello, World");
System.out.println("2 : Hello, World");
System.out.println("3 : Hello, World");
System.out.println("4 : Hello, World");
System.out.println("5 : Hello, World");
System.out.println("6 : Hello, World");
System.out.println("7 : Hello, World");
System.out.println("8 : Hello, World");
System.out.println("9 : Hello, World");
System.out.println("10 : Hello, World");
System.out.println("----------------------");
//위의 10개의 출력문을 반복문(for)을 사용하여 압축
// => 10번 반복을 위해서 제어변수 i 가 1부터 10이하일 동안
// 1씩 증가하면서 출력문을 반복 실행
// => 초기식 : 제어변수 i 를 선언하고 초기값인 1로 초기화(int i=1)
// 조건식 : 제어변수 i 가 10이하일 때 true 조건(i<=10)
// 증감식 : 제어변수 i 를 1씩 증가 (i++ 또는 ++i)
int i; //for문보다 위에 위치하므로 for문 종료후에도 유지됨
for(i = 1;i <= 10; i++) {
// 조건식 결과가 true 일 때 실행 할 문장
System.out.println(i + " : Hello, World");
}
System.out.println("for문 종료 후 i값 = " + i);
// => 오류 발생! i cannot be resolved to a variable.
// => 제어변수 i 는 for문에서 선언된 변수이므로
// for 문의 블록{}이 끝나면 사용 불가능한 변수 (존재하지 않음)
// => 따라서, 제어변수 i를 for문 종료 후에도 사용하려면
// 최소한 for문 보다 윗쪽(앞쪽)에서 선언해야 한다!
/*
* 위의 for 문에 대한 디버깅(Debugging)
* -------------------------------------------------------------------------
* 초기식(i) 조건식(i<=10) 실행결과(i + "Hello, World") 증감식(i++)
* -------------------------------------------------------------------------
* 1 true 1 : Hello, World 출력 1 -> 2
* 2 true 2 : Hello, World 출력 2 -> 3
* 3 true 3 : Hello, World 출력 3 -> 4
* 4 true 4 : Hello, World 출력 4 -> 5
* 5 true 5 : Hello, World 출력 5 -> 6
* 6 true 6 : Hello, World 출력 6 -> 7
* 7 true 7 : Hello, World 출력 7 -> 8
* 8 true 8 : Hello, World 출력 8 -> 9
* 9 true 9 : Hello, World 출력 9 -> 10
* 10 true 10 : Hello, World 출력 10 -> 11
* 11 false for문을 빠져나감
*/
System.out.println("===========================");
// 제어변수 i가 1~10까지 1씩 증가하면서 i값 출력
// => 출력 예시 : 1 2 3 4 5 6 7 8 9 10
// for(초기식;조건식;증감식) {
// 수행할 문장;
for(i = 1; i <= 10; i++) {
System.out.println(i);
1
2
3
4
5...
*int가 2개 있으면 중복이라 안나옴
for(i = 1; i <= 10; i++) {
System.out.print(i + " ");
1 2 3 4 5 6 7 8 9 10
System.out.println(); //줄바꿈 역할
System.out.println("----------------------------");
//제어변수 i가 1 ~ 10까지 2씩 증가하면서 i 값 출력(홀수 출력)
// => 1 3 5 7 9
for(i=1;i<=10;i+=2) {
System.out.print(i + " ");
}
//제어변수 i가 2~10까지 2씩 증가하면서 i값 출력 (짝수 출력)
// => 2 4 6 8 10
for(i=2;i<=10;i+=2) {
System.out.print(i + " ");
i=i+2 해도 되지만
i+=2 로 하면 됨
//제어변수 가 10~1까지 1씩 감소하면서 i값 출력(역순으로 출력)
// 10 9 8 7 6 ... 1
for(i=10;i>=1;i--) {
System.out.print(i + " ");
int dan = 2;
int i = 1;
for(i=1; i<=9;i++) {
System.out.print(dan * i + " ");
int dan = 2;
int i = 1;
System.out.println(" <dan + 단>");
System.out.println(" < " + dan + " 단 >");
System.out.printf(" <%d단 > ", dan);
System.out.println("2");
System.out.println(dan + "*" + i + "=" + (dan*i)); // dan = 2 , i = 1
i++; // 1 -> 2
System.out.println(dan + "*" + i + "=" + (dan*i)); // dan = 2 , i = 2
i++; // 2 -> 3
System.out.println(dan + "*" + i + "=" + (dan*i)); // dan = 2 , i = 3
i++; // 3 -> 4
for(i=1; i<10;i++) { // 조건식 : i <= 9
// System.out.println(dan + "*" + i + "=" + (dan*i));
System.out.printf("%d * %d = %d\n", dan,i,(dan*i));
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
누적 계산
//1~5까지 합을 계산하여 변수에 저장 후 출력
int num = 1; // 합계에 누적 될 변수 (1~5까지의 숫자)
int sum = 0; // 합계를 누적할 변수
sum = sum + num; // sum + num 의 결과를 다시 변수 sum에 저장
// => sum = 0, num = 1
num++; // num = 1 -> 2 변경
sum = sum + num; //sum + sum 의 결과를 다시 변수 sum 에 저장
// => sum = 1 + 2 = 3
num++; // num = 2 -> 3 변경
sum = sum + num; //sum + sum 의 결과를 다시 변수 sum 에 저장
// => sum = 3 + 3 = 6
num++; // num = 3 -> 4 변경
sum = sum + num; //sum + sum 의 결과를 다시 변수 sum 에 저장
// => sum = 6 + 4 = 10
num++; // num = 4 -> 5 변경
sum = sum + num; //sum + sum 의 결과를 다시 변수 sum 에 저장
// => sum = 10 + 5 = 15
num++; // num = 5 -> 6 변경
System.out.println("sum의 값 : " + sum);
System.out.println("num의 값 : " + num);
//1~10까지의 1씩 증가하는 정수의 합(total)을 계산 후 출력
int total = 0; // 누적 변수 선언 및 초기화
for(int i = 1;i<=10;i++) { // 1~10까지 1씩 증가하면서 반복
// 누적변수에 현재 값 i 를 누적
total += i; // total = total + i
System.out.println("i = " + i+ ", total = " + total);
}
System.out.println("i~10까지 정수 합 : " + total);
반복문을 사용한 연산의 누적 (ex. 합계 계산 등)
1. 연산을 누적할 누적 변수 선언 및 초기화(반복문보다 먼저 수행)
2. 반복문을 사용하여 특정 횟수 반복
3. 반복문 내에서 특정 연산(데이터)을 누적 변수에 누적
4. 반복문 종료 후 누적 변수 사용(출력)
정수 1 ~ 100 까지의 합을 누적 변수 total 에 누적 후 출력
누적변수 선언 및 초기화
for 문
누적 변수 출력
int total = 0;
for(int i =1;i<=100;i++) {
total+=i;
}
System.out.println("i~100까지 정수 합 : " + total);
}
total 에 i 값을 누적 후 누적 변수 출력
=> 1~10까지 1씩 증가하면서, 정수 중 짝수의 합만 계산
누적 변수 선언 및 초기화
[for문 생성]
for(초기식;조건식;증감식) {
짝수일 경우에만 누적변수에 현재 값을 누적
짝수를 판별
if(짝수) {
누적변수에 누적
} else { //짝수가 아닐 때 (=홀수일 때)
홀수이므로 누적하지 않는다는 내용 출력
1~10까지 정수 중 짝수의 합 출력
int total = 0;
for(int i =1;i<=10;i++) {
if((i%2==0)){
total+=i;
} else {
System.out.println(i+"는 짝수가 아님");
}
System.out.println("i~10까지 짝수 합 : " + total);
int total = 0;
for(int i =1;i<=10;i++) {
if((i%2==0)){ //짝수를 판별
//짝수 일때 누적 수행
total +=i;
System.out.println("i =" + i + ", total = " + total);
} else {
System.out.println(i+"는 짝수가 아님");
}
}
System.out.println("1~10까지 정수 중 짝수의 합 : " + total);
결과 =>
1는 짝수가 아님
i =2, total = 2
3는 짝수가 아님
i =4, total = 6
5는 짝수가 아님
i =6, total = 12
7는 짝수가 아님
i =8, total = 20
9는 짝수가 아님
i =10, total = 30
1~10까지 정수 중 짝수의 합 : 30
1~10까지 정수 중 홀수 의 합
int total = 0;
for(int i=1;i<=10;i++) {
if(i%2==1) { //if(i%2==1) 도 가능
total+=i;
System.out.println("i =" + i + ", total =" + total);
}else { //홀수가 아닐 때 즉, 짝수 일 때
System.out.println(i + " : 는 홀수가 아님");
}
}
System.out.println("1~10까지 정수 중 홀수의 합 : " + total);
'BackEnd > Java' 카테고리의 다른 글
0824 JAVA - 클래스와 객체 , 인스턴스 (0) | 2022.08.24 |
---|---|
0818 JAVA - WHILE 문 ~ DO WHILE 문 (0) | 2022.08.18 |
8/17 JAVA - 주사위 굴리기, 타이머 만들기 (0) | 2022.08.17 |
8/1 JAVA - 자바의 기본 데이터 타입 (0) | 2022.08.01 |
[JAVA] print, println, printf의 구분 (0) | 2022.07.29 |