본문 바로가기
Java 공부 기록

반복문(for문)

by moonchance 2023. 6. 6.

for문

 

 

중첩for문

 

[출처]자바의 정석

 

 

실습을 해보자.

	public static void main(String[] args) {
		// 반복문 : 규칙적인 작업을 반복적으로 사용할 때(for, while, do while)
		// for문과 while문은 동작 방식이 같다. (조건이 일치하지 않으면 실행이 안됨)
		// do while문은 두방식과 조금 다름 (반드시 한번은 동작 하고 조건확인)
		// for (1.초기화 ; 2.5.8.조건식; 4.7.증감연산) {
		//     3.6.실행문 }
		// 초기화 : 조건식이나 실행문에서 사용하는 변수를 초기화 처음 실행시 한번만 수행 / 생력가능
		// 조건식 : 반복횟수를 결정하는 식 (true => 반복, false => 종료) / 생략가능
		// 증감연산식 : 조건식에서 사용하는 변수가 증가 / 감소되어 반복횟수를 조절 /생략가능
		
		// 1 ~ 10 까지 출력하는 예제
		// 초기화 : 사용할 변수 (i) 1부터 => int i = 1;
		// 조건식 : 변수가 10이 될 때 까지 => i <= 10 (1부터 10까지)
		// 증감식 : 1씩 증가 i++
		// 실행문 : i 출력
		for (int i = 1; i <= 10; i++) {
			System.out.print(i + " ");
		}
		System.out.println("\n--------------------");
		// 10 ~ 1 까지 출력
		for (int i = 10; i >= 1; i--) {
			System.out.print(i + " ");
		}
		System.out.println("\n--------------------");
		// 2 ~ 10 까지 2씩증가 (2의 배수 출력)
		for (int i = 2; i <= 10; i += 2) {
				System.out.print(i + " ");
		}
		System.out.println("\n--------------------");
		// 지역변수의 범위 { 선언     소멸 }
		
		// 1 ~ 10 까지 (짝수만 출력)
		for (int i = 1; i <= 10; i++) {
			if (i % 2 == 0) {
				System.out.print(i + " ");
			}
			else {
				System.out.print("홀수 ");
			}
		}
		System.out.println("\n--------------------");
		// 1 ~ 10 까지의 합계 (1 + 2 + 3 + 4 ...10)
		int sum = 0;
		for (int i = 1; i <= 10; i++) {
			System.out.print((sum += i) + " ");
		}
		System.out.println("\n1 ~ 10 까지의 총 합은 : " + sum);
		
	}

 

	public static void main(String[] args) {
		// 1 ~ 10 홀수의 합과 짝수의 합을 출력
		int even = 0; // 짝수
		int odd = 0; // 홀수
		for (int i = 1; i <= 10; i++) {
			if (i % 2 ==0) {
				even += i;
			}
			else {
				odd += i;
			}
		}
		System.out.println("홀수의 합 : " + odd);
		System.out.println("짝수의 합 : " + even);
		
		// 오른쪽 삼각형
		for (int i = 0; i < 5; i++) {
			for (int j = 5; j > i + 1; j--) {
				System.out.print(" ");
			}
			for (int k = 0; k <= i; k++) {
				System.out.print("*");
			}
			System.out.println();
		}
		// 왼쪽 삼각형
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	public static void main(String[] args) {
		// 구구단 2단 출력
//		int num = 2;
//		for (int i = 1; i <= 9; i++) {
//			System.out.println(num + " x " + i + " = " + num*i);
//		}
		// 구구단 출력
		for (int i = 2; i <= 9; i++) {
			System.out.println(i + "단 출력!!");
			for (int j = 1; j <= 9; j++) {
				System.out.println(i + " x " + j + " = " + (i * j));
			}
		}
		// 왼쪽 삼각형 별
		for (int l = 0; l < 5; l++) {
			for (int j = 0; j <= l; j++) {
				System.out.print("★");
			}
			System.out.println();
		}
		System.out.println("-----------");
		// 다이아몬드 별
		for (int i = 0; i < 5; i++) {
			for (int j = 5; j > i+1; j--) {
				System.out.print(" ");
			}
			for (int k = 0; k <= i; k++) {
				System.out.print("★");
			}
			for (int j = 0; j < i; j++) {
				System.out.print("★");
			}
			System.out.println();
		}
		for (int i = 0; i < 4; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print(" ");
			}
			for (int j = 4; j > i; j--) {
				System.out.print("★");
			}
			for (int j = 3; j > i ; j--) {
				System.out.print("★");
			}
			System.out.println();
		}
		
	}
	public static void main(String[] args) {
		/* num을 입력 받아 num의 약수를 출력
		 * 약수 : 나누어서 떨어지는 수
		 * 12의 약수 : 12/(1~12) = 나머지가 0이 되는 수(1, 2, 3, 4, 6, 12)
		 */
		
		Scanner scan = new Scanner(System.in);
		System.out.println("정수를 입력해 주세요.");
		int num = scan.nextInt();
		for (int i = 1; i <= num; i++) {
			if (num % i == 0) {
				System.out.print(i + " ");
			}
		}
		
		scan.close();
	}

 

	public static void main(String[] args) {
		/* 최대공약수 구하기(Greatest Common Divisor)
		 * 공약수 : 두 정수의 약수 중 공통적으로 있는 약수
		 * 최대 공약수 : 공약수 중 가장 큰 값
		 * 8, 12 의 공약수
		 * 8 : 1, 2, 4, 8
		 * 12 : 1, 2, 3, 4, 6, 12
		 * 최대 공약수 : 4
		 */
		
		Scanner scan = new Scanner(System.in);
		System.out.println("첫 번째 정수를 입력 해주세요.");
		int num1 = scan.nextInt();
		System.out.println("두 번째 정수를 입력 해주세요.");
		int num2 = scan.nextInt();
		
		int gcd = 0;
		for (int i = 1; i <= num1; i++) {
			if (num1 % i == 0 && num2 % i == 0) {
				gcd = i; // 공약수가 더 있다면 이전 값은 사라지고 뒤에 나오는(더 큰 공약수)를 저장
			}
		}
		System.out.println(num1 + " 과(와) "+ num2 + "의 최대 공약수 : " + gcd);
		
		System.out.println("------------------");
		/* break : 반복문에서 조건이 맞다면 (반복문)을 빠져나오는 문구
		 * if문의 가장 가까운 for문만 벗어날수 있음
		 */
		for (int i = num1; ; i--) {
			if (num1 % i == 0 && num2 % i == 0) {
				System.out.println("두 수의 최대 공약수 : " + i);
				break;
			}
		}
		// break : 반복문에서 for문에 이름표를 붙여 (반복문)을 빠져나오는 문구
		 
		int i = 10;
		a: for (;;) {
			for (;;) {
				for (;;) {
					if (i == 10) {
						i++;
						break a; // 지정된 a: for문 까지 빠져 나갈 수 있음
					}
				}
			}
		}
		
		scan.close();
	}
	public static void main(String[] args) {
		/* 최소공배수 구하기(Least Common Multiple)
		 * 공배수 : 두 수의 정수에서 공통적으로 있는 배수
		 * 10 : 10, 20, 30, 40, 50....
		 * 15 : 15, 30, 45, 60, 75....
		 * 10, 15 최소공배수 : 30
		 */
		// num1 과 num2 를 입력받아 최소공배수 출력
		// i * num
		
		Scanner scan = new Scanner(System.in);
		System.out.println("두 정수를 입력 하세요.");
		int num1 = scan.nextInt();
		int num2 = scan.nextInt();
		for (int i = num1; ;i+=num1) {
			if(num1 % i == 0 && num2 % i == 0) {
				System.out.println(num1 + " 과(와) " + num2 + " 의 최소공배수 : " + i);
				break;
			}
			
		}
		scan.close();
	}
	public static void main(String[] args) {
		/* 2 4 6 8 10
		 * 12 14 16 18 20
		 * 22 24 26 28 30
		 * 1 ~ 30까지 짝수만 출력
		 * 5개씩 한줄로 출력
		 */
		
		for (int i = 1; i <= 30; i++) {
			if (i % 2 ==0) {
				System.out.printf("%3d", i); // printf %d(정수) 3개로 출력해서 줄맞춤 가능
				if (i % 10 == 0) {
					System.out.println();
				}
			}
		}
		System.out.println();
		System.out.println("-------------");
		int j = 1;
		while (j <= 30) {
			if (j % 2 == 0) {
				System.out.print(j + " ");
				if (j % 10 == 0) {
					System.out.println();
				}
			}
			j++;
		}
		System.out.println();
		System.out.println("-------------");
		// 출력 구문
		System.out.println("println : 줄바꿈이 있는 출력");
		System.out.println("ptint : 줄바꿈이 없는 출력");
		System.out.println("printf : 지시자를 통해서 값을 표현");
		/* 서식 지정자를 통해 출력 데이터 서식 지정
		 * %n(\n 줄바꿈), %d(정수형), %f(실수형), %c(문자), %s(문자열)
		 * escape sequence
		 * \n(줄바꿈), \r(캐리지리턴), \t(탭)
		 */
		int num1 = 5, num2 = 3;
		// 5 + 3 = 8
		System.out.printf("%d + %d = %d%n", num1, num2 , num1 +  num2);
		
		double num3 = 5, num4 = 12;
		System.out.printf("%.0f / %.0f = %.1f", num3, num4 , num3 /  num4); // 실수형 자리수는 %.0f %.1f ...자리수 지정
	}

'Java 공부 기록' 카테고리의 다른 글

반복문(while, do while)  (0) 2023.06.06
break문, continue문  (0) 2023.06.06
조건문(switch문)  (0) 2023.06.06
조건문(if문)  (0) 2023.06.06
TypeCasting(형변환)  (0) 2023.06.06