[Day 04] Java 0331 - 내용 정리

Doyeon Kim·2022년 3월 31일
1

Java

목록 보기
6/16
post-thumbnail

🌞while문

🎇예시

초기값;
while(최종조건식) {
	반복시킬 명령어();
    증감식;
}

🌞do~while문

🎇예시

초기값;
do {
	반복시킬 명령어();
    증감식;
} while(최종조건식); //하나의 덩어리

🌞break

  • break는 switch문과 반복문에서 사용되면 switch문이나 반복문을 탈출하는 용도로 사용.
  • if문을 탈출하는 것은 없다.
  • if문은 탈출할 조건을 판별하려고 사용하는 것이고, break는 switch의 중괄호 { }나 반복문의 { }를 탈출하는 것이다.

🌞continue

  • continue는 반복문에서만 사용
  • 반복문 속에 있는 continue 이후의 문장은 동작하지 않고, 반복문 다음의 증감식이나 조건식을 판별하러 간다.

🎇예시

for (int i=1; i<=5; i++) {
	명령1;
    명령2;
    if(조건)
    	continue;
    명령3; //continue를 만나면 i++인 증감식을 다음으로 실행하고, 명령 3,4는 실행되지 않는다.
    명령4;
}

🌞배열

  • 자료형이 같은 기억장소의 모임
  • int []student; //배열을 선언
  • student = new int[5]; //배열의 생성
  • 배열의 생성과 선언을 한 줄로 표시할 수 있다.
  • ex) int []student = new int[5]; //5는 배열의 크기
  • 배열의 크기가 n일 때, 사용할 수 있는 배열의 인덱스는 0부터 n-1번째 까지이다.

🌞예제

🌟(while문) 예제1🌟

사용자에게 임의의 수 n을 받아 다음과 같이 n!을 구하여 출력하는 프로그램

n을 입력하세요: 5
5*4*3*2*1 = __
import java.util.Scanner;

public class FactorialPractice {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n;
		int sum=1;
		
		System.out.print("n을 입력하세요: ");
		n = sc.nextInt();
		
		int i=n; //i의 초기값이 n부터 시작
		while(i>=1) { //i가 1보다 크거나 같을때에
			sum *= i; //i를 곱한 값을 누적
			System.out.print(i);
			if(i != 1) {
				System.out.print("*");
			}
			i--;
			
		}
		System.out.print("=" + sum);
	}

}

🌟(중첩 while문) 예제2🌟

중첩 while문을 이용하여 다음과 같이 동작하는 프로그램을 작성하세요.

줄 수를 입력하세요: 3
칸 수를 입력하세요: 5
*****
*****
*****
import java.util.Scanner;

public class StarPractice {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int a, b;

		System.out.print("줄 수를 입력하세요: ");
		a = sc.nextInt();
		System.out.print("칸 수를 입력하세요: ");
		b = sc.nextInt();

		int i = 1;
		while (i <= a) { //1부터 입력받은 줄 수 a만큼 실행
			int j = 1;
			while (j <= b) { //1부터 입력받은 칸 수 b만큼 실행
				System.out.print("*"); 
				j++;
			}
			System.out.println("");// 위쪽 while문을 탈출하면 다음 줄로 넘어감.
			i++;
		}
	}

}

🌟(do~while문) 예제3🌟

do~while문을 이용하여 2단부터 9단까지의 구구단을 모두 출력

public class GugudanAllDoWhilePractice {

	public static void main(String[] args) {
		int i = 2;
		do {
			System.out.println(i + "단");
			int j = 1;
			do {
				System.out.println(i + "*" + j + "=" + (i * j));
				j++;
			} while (j <= 9);
			i++;
			System.out.println("------------------------------------------------");
		} while (i <= 9);

	}

}

🌟예제3🌟

자신이 선택한 로또번호 6개를 배열에 저장하고 출력하는 프로그램을 작성
(1~45 숫자 중 6개 선택)

package day0331;


public class LottoPractice {

	public static void main(String[] args) {
		
		int []n = {6, 10, 21, 24, 35, 43};
		
		for(int i=0; i<n.length; i++) {
			System.out.print(n[i] + " ");
		}
		


	}

}

🌞연습문제

👑연습문제1👑

{1.0, 2.0, 3.0, 4.0}과 같은 초기값을 가지는 double형의 배열을 생성한다. 모든 배열 요소를 출력한 후에 모든 요소를 더하여 합을 출력하고 요소 중에서 가장 큰 값을 찾아서 출력하는 프로그램을 작성하라.

public class Practice129_10 {

	public static void main(String[] args) {
		double []data = {1.0, 2.0, 3.0, 4.0};
		double sum=0, max=0;
		
		for(int i=0; i<data.length; i++) {
			System.out.print(data[i] + " ");
			sum += data[i];  //i값을 누적
			
			if(data[i] > max) { //최대값 출력
				max = data[i];
			}
		}
		System.out.println();
		System.out.println("합은 " + sum);
		System.out.println("최대값은 " + max);
	}

}

👑연습문제2👑

"Hello", "Java", "World"를 가지고 있는 문자열의 배열을 생성해보자. 화면에 배열 요소를 출력하는 프로그램을 작성해본다.

public class Practice130_11 {

	public static void main(String[] args) {
		String []data = {"Hello", "Java", "World"};
		
		for(int i=0; i<data.length; i++) {
			System.out.println(data[i]);
		}

	}

}

👑연습문제3👑

다음과 같이 학생들의 성적을 받아서 배열에 저장했다가 합계와 평균을 구하는 프로그램을 작성하라. -1이 입력되면 반복을 종료한다.

성적을 입력하세요: 10
성적을 입력하세요: 20
성적을 입력하세요: 30
성적을 입력하세요: -1
합계: 60
평균: 20.0
package day0331;

import java.util.Scanner;

public class Practice130_12 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int []data = new int[4];
		
		int total=0;
		
		for(int i=0; i<data.length;) {
			System.out.print("성적을 입력하세요: ");
			 int n = sc.nextInt(); //입력 값을 n에 저장
			 
			 if(n == -1) { //n이 -1이되면 반복을 종료
				 break;
			 } else { //n이 -1이 아니면 n에 값을 넣고 i를 증감
				 data[i]=n;
				 i++;
			 }
		}
		
		for(int i=0; i<data.length; i++) {
			total += data[i]; //data[i]의 총합
		}
		double avg = total / (double)data.length; //data[i]값의 평균값
		
		System.out.println("합계: " + total);
		System.out.println("평균: " + avg);

	}

}

👑연습문제4👑

3 6 9 게임을 만들어보자. 369게임은 숫자에 3,6,9가 포함되어 있으면 3,6,9의 개수만큼 박수를 치는 게임이다. 1부터 50까지의 정수에 대하여 369게임을 실행한다.

1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 ...
public class Practice128_03 {

	// 단순히 3의 배수에 짝을 출력하는 것이 아니라 10의 자리 수와 1의 자리의 각각이 3의 배수인지 판별하여 짝을 출력해야함.
	// 만약, i가 한 자리 숫자라면 그 수가 3의 배수인지 판별하여 짝을 출력하거나 아니면 그 숫자를 출력한다.
	// 만약, i가 두 자리 숫자라면 10의자리와 1의자리를 각각 구하여
	// 10의 자리가 3의 배수이고 1의 자리도 3의 배수라면 '짝짝' 출력
	// 그렇지 않고, 10의자리만 3의 배수이거나 1의자리만 3의 배수라면 '짝' 출력
	// 10의자리도 3의 배수가 아니고 1의자리도 3의 배수가 아니라면 그 수를 출력
	
	public static void main(String[] args) {
		int i = 1;
		int n10, n1;// n10은 10의자리를 저장할 변수, n1은 1의자리를 저장할 변수

		// 20 1의자리가 0일 때
		// 30

		do {
			n10 = i / 10;
			n1 = i % 10;
			if (i < 10) { // 1자리 숫자
				if (i % 3 != 0) { // 한자리 숫자일 때 3의 배수가 아닌 것은 i를 출력
					System.out.print(i + " ");
				} else {
					System.out.print("짝 ");
				}
			} else { // 두자리 숫자
				// 10의자리 처리
				if (n10 % 3 == 0) { // 10의자리가 3의 배수인가?
					if (n1 > 0 && n1 % 3 == 0) { // 1의자리도 3의 배수인가? (30도 출력되기때문에 n1>0이라는 조건을 넣어줌)
						System.out.print("짝짝 "); // 10의자리, 1의자리 모두 3의 배수일 때 짝짝
					} else {
						System.out.print("짝 "); // 10의자리만 3의 배수일 때 짝
					}
				} else { // 10의 자리가 3의 배수가 아닌 경우
					if (n1 > 0 && n1 % 3 == 0) { // 1의 자리가 0보다 크고, 1의 자리가 3의 배수일 때 짝
						System.out.print("짝 ");
					} else {
						System.out.print(i + " "); // 10의자리, 1의자리가 3의 배수가 아닌경우 i출력
					}
				}
				// 1의자리 처리
			}

			i++;
		} while (i <= 50);
	}

}
profile
꾸준히 성장하는 개발자✨

0개의 댓글

Powered by GraphCDN, the GraphQL CDN