반응형

 

반복문

 

: 제어문 처음으로 돌아가 반복 실행하는 문장이다.

ex) for 문, while 문, do - while 문

 

 

 

for 문

 

: 주어진 횟수만큼 반복하고 싶을 경우 사용한다.

 

for 문 로직

 

사용법은 아래와 같다.

 

초기화식 : 시작 조건

조건식 : 종료 조건

증감식 : 반복시 실행

 

for(초기화식; 조건식; 증감식) {
	실행 문장;
}

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method1();
	}
	
	public void method1() {
		/*
		 * 반복문
		 * for, while
		 * 
		 * i = 0  <- 초기화식 : 시작조건
		 * i < 10 <- 조건식    : (종료 조건)
		 * i++    <- 증감식    : 반복시 실행
		 */
		System.out.println("for 문이 시작 됩니다.");
		for(int i=0; i<5; i++) { // 0부터 4까지 증가함
			System.out.println(i);
		}
		System.out.println("for 문이 종료 됩니다.");
	}
}

 

결과 화면 1

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method2();
	}
	
	public void method2() {
		/* 
		 * 1 ~ 10까지의 합을 구하시오.
		 */
		int sum = 0;
//		sum += 1;
//		sum += 2;
//		sum += 3;
//		sum += 4;
//		sum += 5;
		
		for (int i=0; i<=10; i++) {
			sum+=i;
		}
		System.out.println("1 ~ 10까지의 합은 : " + sum);
	}
}

 

결과 화면2

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method3();
	}
    
	public void method3() {
		/*
		 * 1 ~ 10 부터의 홀수의 합을 구하시오.
		 * i % 2 == 1
		 */
		int sum = 0;
		
		for(int i=1; i<=10; i++) {
			if(i%2 == 1) {
				sum += i;
				System.out.println(i + ", " + sum);
			}
		}
		System.out.println("1 ~ 10까지의 홀수의 합은 : " + sum);
	}
}

 

결과 화면3

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method4();
	}
	
	public void method4() {
		/*
		 * 1 ~ 10 부터의 짝수의 합을 구하시오.
		 */
		int sum = 0;
		
//		for(int i=1; i<=10; i++) {
//			if(i%2 == 0) {
//				sum += i;
//				System.out.println(i + ", " + sum);
//			}
//		}
		
		for (int i=2; i<=10; i=i+2) {
			sum += i;
			System.out.println(i + ", " + sum);
		}
		
		System.out.println("1 ~ 10까지의 짝수의 합은 : " + sum);
	}
}

 

결과 화면4

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method5();
	}
	
	public void method5() {
		/*
		 * 1 ~ 100 까지 홀수의 합을 구하시오.
		 * 1 ~ 100 까지 짝수의 합을 구하시오.
		 */
		int sum_h = 0;
		int sum_j = 0;
		
		for(int i=0; i<=100; i++) {
			if(i%2 == 1) sum_h += i; // 홀수일때
			else sum_j += i; // 짝수일때
		}
		
		System.out.println("1 ~ 100 까지 홀수의 합은 : " + sum_h);
		System.out.println("1 ~ 100 까지 짝수의 합은 : " + sum_j);
	}
}

 

결과 화면5

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method6();
	}
	
	public void method6() {
		/*
		 * 1. 내 이름을 입력하고
		 * 2. 숫자를 입력해서 입력된 숫자 만큼 내 이름이 출력되게 할 것.
		 * 
		 * ex) 양형운
		 * 	   2
		 * 
		 * 	   -> 양형운
		 * 	      양형운
		 */
		
		System.out.print("내 이름을 입력하세요 : ");
		String name = sc.next();
		
		System.out.print("숫자를 입력하세요 : ");
		int num = sc.nextInt();
		
		for(int i=0; i<num; i++) {
			System.out.println(name);
		}
	}
}

 

결과 화면6

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method7();
	}
	
	public void method7() {
		/*
		 * 스캐너를 통해 문자열을 입력 받고
		 * 문자들은 한글자(char 이용)씩 출력해보기()
		 * abcd -> 0번째 문자 : a
		 *         1번째 문자 : b
		 *         2번째 문자 : c
		 *         3번째 문자 : d
		 */
		String input = sc.next();
		int length = input.length();
		char eng;
		
		for(int i=0; i<length; i++) {
			eng = input.charAt(i);
			System.out.println(i + "번째 문자 : " + eng);
		}
	}
}

 

결과 화면7

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method8();
	}
	
	public void method8() {
		/*
		 * 1 부터 내가 입력한 숫자까지의 곱을 구하시오.
		 */
		
		System.out.print("숫자를 입력하세요 : ");
		int num = sc.nextInt();
		long result = 1l; // int로 할 시 20을 곱하면 마이너스(-)가 나옴. int의 범위보다 큰 값이 나와서 그럼
		// int 의 범위보다 넘는 값이 나오는 현상을 오버플로어 라고 한다.
		
		for(int i=1; i<=num; i++) {
			result *= i;
		}
		System.out.println("1 부터 " + num + " 까지의 곱은 " + result + "입니다.");
	}
}

 

결과 화면8

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample01 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample01 obj = new ForExample01();
		obj.method9();
	}
	
	public void method9() {
		int n = 100;
		for( ; ; ) {
			System.out.println("오버플로우 발생");
			break; // 반복문을 빠져나옴
		}
	}
}

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample02 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample02 obj = new ForExample02();
		obj.method1();
	}
	
	public void method1() {
		// A 부터 Z 까지 알파벳을 모두 출력하시오.
		int num = 'A'; 
				
//		for(int i=0; i<26; i++) {
//			char eng = (char)(num+i);
//			System.out.println("알파벳: " + eng);
//		}
		
		for(char i='A'; i<='Z'; i++) {
			System.out.println("알파벳: " + i);
		}
	}
}

 

결과 화면10

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample02 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample02 obj = new ForExample02();
		obj.method2();
	}
    
	public void method2() {
		// A 부터 내가 입력한 알파벳까지 출력하시오.
		// ex ) C -> ABC
		System.out.print("알파벳을 입력하세요 : ");
		String str = sc.nextLine();
		char eng = str.charAt(0);
		
		for(char i='A'; i<=eng; i++) {
			System.out.println("알파벳: " + i);
		}
	}
}

 

결과 화면11

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample03 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample03 obj = new ForExample03();
		obj.method1();
	}
	
	public void method1() {
		/*
		 * 구구단 출력해보기.
		 * scaner로 입력 받은 숫자의 구구단 출력해보기.
		 */
		
		System.out.println("몇 단의 구구단을 출력하시겠습니까?");
		int num = sc.nextInt();
		
		for(int i=1; i<10; i++) {
			System.out.println(num + " x " + i + " = " + num*i);
		}
	}
}

 

결과 화면12

 

 

 

이중 for 문

 

: for 문 안에 또 다른 for 문이 있는 문장을 말한다.

 

사용법은 아래와 같다.

 

초기화식 : 시작 조건

조건식 : 종료 조건

증감식 : 반복시 실행

 

for(초기화식; 조건식; 증감식) {
	for(초기화식; 조건식; 증감식) {
		실행 문장;
	}
}

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample02 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample02 obj = new ForExample02();
		obj.method3();
	}
    
	public void method3() {
		
		for(int i=0; i<4; i++) {
			for(int j=0; j<4; j++) {
				System.out.println("i : " + i + "  j : " + j);
			}
			System.out.println("------i끝------");
		}
	}
}

 

결과 화면1

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample02 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample02 obj = new ForExample02();
		obj.method4();
	}
    
	public void method4() {
		/*
		 * 내가 입력한 숫자만큼 세모가 출력되게 해볼것.
		 * *
		 * **
		 * ***
		 * ****
		 */
		
		System.out.print("숫자를 입력하시오 : ");
		int num = sc.nextInt();
		
		for(int row=0; row<num; row++) {
			for(int j=0; j<row+1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

 

결과 화면2

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample03 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample03 obj = new ForExample03();
		obj.method2();
	}
	
	public void method2() {
		/*
		 * 구구단 전체 출력해보기.
		 */
		
		for(int i=2; i<10; i++) {
			for(int j=1; j<10; j++) {
				System.out.println(i + " x " + j + " = " + i*j);
			}
			System.out.println();
		}
	}
}

 

 

+ break문 응용

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample03 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample03 obj = new ForExample03();
		obj.method3();
	}
	public void method3() {
		int stop = sc.nextInt();
		
		for(int i=2; i<10; i++) {
			for(int j=1; j<10; j++) {
				System.out.println(i + " x " + j + " = " + i*j);
			}
			System.out.println();
			if(i == stop) { // 입력 받은 숫자의 단까지만 출력 후 반복문을 빠져나옴
				break;
			}
		}
	}
}

 

결과 화면4

 

 

package kr.or.ddit.study04.sec02;

import java.util.Scanner;

public class ForExample03 {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		ForExample03 obj = new ForExample03();
		obj.method4();
	}
    
	public void method4() {
		/*
		 * 내가 입력한 단을 출력하지 않고
		 * 다음단 출력 계속 이어서 진행
		 */
		int dan = sc.nextInt();
		
		for(int i=2; i<=9; i++) {
			if(dan == i) continue; // 해당 조건에 맞을 때 하단의 코드를 진행하지 않고 다음 for을 진행함
			for(int j=1; j<=9; j++) {
				System.out.println(i + " x " + j + " = " + i*j);
			}
			System.out.println();
		}
	}
}

 

결과화면5 (이후 9단까지 출력됨)

 

 

 

TIP

 

for 문을 진행할 때 값을 하나하나 찍기에 번거롭다면 디버깅 모드를 사용하는 것이 좋다.

 

1

 

1. 벌레 모양을 클릭하여 디버깅 모드로 전환한다.

 

2

 

2. 키보드 F8을 눌러 반복문을 진행한다.

 

반응형

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

[Java 초급] 8장 반복문 while문, do-while문  (0) 2023.12.11
[Java 초급] 7.5장 테스트  (0) 2023.12.08
[Java 초급] 6.5장 테스트  (0) 2023.12.08
[Java 초급] 6장 조건문  (0) 2023.12.07
[Java 초급] 5.5.2장 테스트2  (2) 2023.12.07