본문 바로가기
국비지원/JAVA

[JAVA] 5-2. 반복문 for

by cosmog 2022. 9. 26.
반응형
반복문 (for)

3가지 조건 (시작값/조건/증가)을 한번에 for()안에 넣어놓은것.

  • 가독성이 좋다.
(예제)
	int i = 1; (1)시작값
	while(i <= 10){ (2)조건
		i++; (3)증가
	}
	
	for(int i = 1; i <=10; i++){
		동작..
	}

 

➰ for 문 - 1-10까지의 합 구하기.

public class ForEx01 {
	
	public static void main(String[] args) {
		
		int sum = 0;
		//1~10합계
		for(int i = 1; i <= 10; i++) {
			sum += i;
		}
		System.out.println(sum);
		
		System.out.println("-------------------------------------------------");
		
		for(int i = 10; 1 <= i; i--) {
			System.out.println(i);
		}
	}

}

➰ for 문 - 소수/소수가 아닌 수 구별하기

import java.util.Scanner;

public class ForEx02 {
	public static void main(String[] args) {
		
		// 정수를 입력받고, 입력한 정수가 소수인지 판별
		// 소수 -> 나누어 떨어지는 수가 1과 자기자신인 수
		// 조건 = 약수의 개수가 2개인 수
		
		Scanner scan = new Scanner(System.in);
		System.out.print("정수>");
		int num = scan.nextInt();
		
		int count = 0; // 카운트변수
		for(int i = 1; i <= num; i++) {
			
			if(num % i == 0) { // 약수
				count ++;
			}
			
		}
		
		//반복을 다 돌고 나왔을때 count == 2라면 소수
		System.out.println(count == 2 ? num + "은 소수" : num + "은 소수가 아님");
		
		scan.close();
	}

}

➰ Quiz - for문을 활용하여 아래 문제들 풀기

1. 7~100까지 정수 중의 7의 배수를 가로로 출력
2. 1~200까지 정수 중의 9의 배수의 개수를 출력
3. 50~100까지의 두 수 사이의 합
4. char 변수를 활용해서 A~Z까지 출력, A=65 / Z=90
5. 어떤 수를 입력받아서 입력 받은 수의 구구단 출력
import java.util.Scanner;

public class Quiz12 {
	public static void main(String[] args) {
		
		/* for문 실습 */
		
		//1. 7~100까지 정수 중의 7의 배수를 가로로 출력
		System.out.print("1. 7의 배수(7-100): ");
		for (int i = 7; i <= 100; i += 7) {
			System.out.print(i+" ");
		}
		System.out.println();
		
		//2. 1~200까지 정수 중의 9의 배수의 개수를 출력
		int count = 0;
		for(int i = 1; i <= 200; i++) {
			if(i % 9 == 0) {
				count++;
			}
		}
		System.out.println("2. 9의 배수의 개수(1-200): " + count + "개");
		
		//3. 50~100까지의 두 수 사이의 합
		int sum = 0;
		for(int i = 50; i <= 100; i++) {
			sum += i;
		}
		System.out.println("3. 50~100까지의 합은: " + sum);
		
		//4. char 변수를 활용해서 A~Z까지 출력, A=65 / Z=90
		/* casting을 활용한 방법 */
		System.out.print("4. A to Z print: ");
		for(int i = 65; i <= 90; i++) {
			System.out.print((char)i + " ");
		}
		
		System.out.println();
		/* 또 다른 방법
		System.out.print("4. A to Z print: ");
		for(char i =65; i <= 90; i++) {
			System.out.print(i+" ");
		}
		System.out.println();
		*/
		
		//5. 어떤 수를 입력받아서 입력 받은 수의 구구단 출력
		Scanner scan = new Scanner(System.in);
		System.out.print("단수 : ");
		int input = scan.nextInt();
		
		for(int i = 1; i <= 9; i++) {
			System.out.printf("%d X %d = %d\n", input, i, input*i);
		}
		
		scan.close();
	}

}

➰for문 - 배열의 사용.

import java.util.Arrays;

public class ForEx03 {
	
	public static void main(String[] args) {
		
		//for문으로 배열의 사용.
		/*
		int[] arr = {1,2,3,4,5,6,7,8,9,10};
		
		for(int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
		*/
		
		//100개의 크기를 갖는 int 배열에 3의 배수만 순서대로 저장.
		int[] arr = new int[100];
		int a = 0;
		for(int i = 0; i < arr.length; i++) {
			a +=3;
			arr[i] = a; 
		}
		System.out.println(Arrays.toString(arr));

	}
}

➰변수의 swap - temp변수를 사용하여 값을 swap하기

import java.util.Arrays;

public class ForEx04 {
	
	public static void main(String[] args) {
		
		//변수의 swap : x와 y의 값을 바꾸어주는 그런 작업.
		
		/* 변수의 swap의 기본 구조
		int x = 10;
		int y = 5;
		
		int temp = x;
		x = y;
		y = temp;
		
		System.out.println("x값:" + x + ", y값:" + y);
		*/
		
		//배열의 swap - 1번 랜덤하게 섞는다.
		int[] arr = {1,2,3,4,5,6,7,8,9,10};
		
		int ran = (int)(Math.random() * 9) + 1;
		
		int temp = arr[0];
		arr[0] = arr[ran];
		arr[ran] = temp;
		
		System.out.println(Arrays.toString(arr));
		
		
	}

}

➰Quiz - 절대 중복되지 않는 3개의 숫자를 뽑기(swap을 사용하여 랜덤하게 배열을 섞는다.)

1. 배열을 15번정도 랜덤하게 섞는다.
2. 섞인 배열의 앞에서부터 3개의 값을 새로운 배열에 저장해서 출력한다.
import java.util.Arrays;

public class Quiz13 {

	public static void main(String[] args) {

		//절대 중복되지 않는 3개의 숫자를 뽑기
		/*
		 * 배열을 랜덤하게 15번정도 섞는다. 
		 * 0~2번째 인덱스값을 새로운 배열에 옴겨담는다.
		 */

		int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
		
		for(int i = 0; i < arr.length; i++) {
			//random한 수를 for문 밖에서 뽑으면 한번밖에 안뽑힘. for문 안에서 뽑아야 됩니다.
			int ran = (int)(Math.random() * arr.length); //0~14
			//System.out.println(arr[i] + "-" + arr[ran]);
			
			int temp = arr[i];
			arr[i] = arr[ran];
			arr[ran] = temp;
		}
		
		int[] result = new int [3];
		for(int i = 0; i < result.length; i++) {
			result[i] = arr[i];
		}

		System.out.println(Arrays.toString(result));
	}

}

나의 실수
- 랜덤 수를 for문 밖에서 할당받음.
for문 밖에서 받으면 1개의 랜덤한 수만 얻을 수 있다.
for문 안에서 얻어야 15개의 랜덤한 수를 얻을 수 있다.

 

중첩반복문

아래와 같이 사용가능하다.

for(int i = 1; i <= 10; i++){
	for(int j = 1; j <10; j++){
		동작..
	}
}
	위 코드의 동작에 대하여
	i = 1
	j = 1---->10까지 동작
	i = 2
	j = 1---->10까지 동작
	....
	i = 10
	j = 1---->10

➰중첩반복문의 사용.

public class MultiForEx01 {
	
	public static void main(String[] args) {
		
		//1~9
		for(int i = 1; i <= 9; i++) {
			System.out.println(i);
			//중첩반복문의 사용
			for(int j = 1; j <= 9; j++) {
				System.out.println(i + "-" + j);
			}
			System.out.println("---------");
		}
		
		
	}

}

➰Quiz - 2~9단의 구구단을 세로로 출력하기.

public class Quiz14 {
	
	public static void main(String[] args) {
		
		//2단~9단까지 구구단을 세로로 출력.
		
		for(int i = 2; i <= 9; i++) {
			System.out.println("구구단:" + i + "단");
			for(int j = 1; j <= 9; j++) {
				System.out.printf("%d X %d = %d\n", i, j, i*j);
			}
			System.out.println("----------------");
		}
	}

}
반응형