4일차

|

주요내용 : switch~case 마무리, 반복문(for, while, do ~ while) - 구구단출력, 별찍기

        //switch ~ case
		//다음과 같이 주민등록번호가 존재합니다. 123456-1234567
		//이 주민번호를 가지고 남성인지, 여성인지 판별하여 출력합니다.
		//1, 3 : 남성, 2,4 : 여성, 1900년대 :1,2 2000년대 : 3,4 
		String juminbunho = "123456-4234567";
		char gubun = juminbunho.charAt(7);
		
		if(gubun == '1' || gubun == '3') {
			System.out.println("남성입니다.");
		}else {
			System.out.println("여성입니다.");
		}
		
		//위의 소스를 switch~case 버전으로 변경하세요.
		String juminbunho = "123456-5234567";
		char gubun = juminbunho.charAt(7);
		
		switch(gubun) {
		case '1': //case 붙여쓰면 바로 아래 나오는 거에 같이 해당된다고 생각하면 됨.
		case '3':
			System.out.println("남성입니다.");
			break;
		case '2':
		case '4':
			System.out.println("여성입니다.");
			break;
		default :
			System.out.println("잘못입력하셨습니다.");
			break;
		}
		
		//문제] 임의의 수 100이 주어집니다.
		//다음과 같은 조건을 만족하는 값을 출력하세요.
		//1. 7로 나눌대, 나머지가 1인 수
		//2. 7로 나눌대, 나머지가 2 또는 3인 수
		//3. 7로 나눌대, 나머지가 4 또는 5인 수
		//4. 7로 나눌대, 나머지가 6인 수
		//5. 7로 나누어 떨어지는 수.
		
		//if문
		int x = 100;
		if(x%7==1) {
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 1인 수");
		}else if(x%7==2 || x%7==3) {
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 2 또는 3인 수");
		}else if(x%7==4 || x%7==5) {
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 4 또는 5인 수");
		}else if(x%7==6) {
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 6인 수");			
		}else if(x%7==0){
			System.out.println("x[" + x + "]는 나누어 떨어지는 수");
		}
		
		//switch문
		int x = 777;
		switch(x%7) {
		case 1 :
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 1인 수");
			break;
		case 2 :
		case 3 : 
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 2 또는 3인 수");
			break;
		case 4 :
		case 5 : 
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 4 또는 5인 수");
			break;
		case 6 :
			System.out.println("x[" + x + "]는 나눌 때, 나머지가 6인 수");
			break;
		default :
			System.out.println("x[" + x + "]는 나눌 때, 나누어 떨어지는 수");
			break;
		}
--------------------------------------------------------------------------        
        
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.Scanner;

//반복문 : 조건문이 처리하고자하는 내용을 반복.
//종류 : for, while, do ~ while
// for의 형식
// for(초기값; 조건식; 증감식){
//     ..........;
// }

// while(조건식){ // 먼저 조건식을 체크.
//     .....;
// }

// do{     // 적어도 한번은 실행합니다.
//  ......;
// while(조건식);

public class JavaTwo {

	public static void main(String[] args) throws NumberFormatException, IOException {

    //1 ~ 100 사이의 합계를 구하세요.
		
//	int i, sum = 0; //매번 초기화해야 오류가 안난다.
	//1. for문
	//    초기값      조건식     증감식
	for(i = 0;  i<=100; i++) { // i++ 는 i+=1 와 i=i+1 과 같다.
		sum+=i;
	}
	System.out.println("for문 : 1 ~ 100 사이의 합은 : " + sum); //5050
	
	//2. while문
	while(i<=100) {
		sum+=i;
		i++;
	}
	System.out.println("while문 : 1 ~ 100 사이의 합은 : " + sum); // 5050

	//3. do ~ while문
	int sum2=0, i2 = 0;
	do{
		sum2+=i2;
		i2++;
	}while(i2<=100);
	System.out.println("do ~ while문 : 1 ~ 100 사이의 합은 : " + sum2); //5050
	
	//문제] 1 ~ 100 사이의 수 중에서 홀수의 합을 구하여 출력하세요.
	//단, for, while, do~while을 사용합니다.
	//1. for문
	for(i = 0; i<=100; i++) {
		if(i%2 == 0) 
			continue; //분기문 : 건너뛰기, skip
		sum+=i;
	}System.out.println("for문 : 1 ~ 100 사이의 수 중에서 홀수의 합은 : " + sum); //2500
	
	//2. while문
	while(i<=100){
		if(i%2 == 0)
			continue;
		sum+=i;
	}System.out.println("while문 : 1 ~ 100 사이의 수 중에서 홀수의 합은 : " + sum); //2500
	
	//3. do ~ while문
	int sum2=0, i2 = 0;
	do{
		if(i2%2 == 1) {
		sum2+=i2;
		}
		i2++;
	}while(i2<=100);
	System.out.println("do ~ while문 : 1 ~ 100 사이의 수 중에서 홀수의 합은 : " + sum2); //2500
	
	//문제] 1 ~ 100 사이의 수 중에서 짝수의 합을 구하여 출력하세요.
	//단, for, while, do~while을 사용합니다.
	//1. for문
	for(i = 0; i<=100; i++) {
		if(i%2 == 0) 
		sum+=i;
	}System.out.println("for문 : 1 ~ 100 사이의 수 중에서 짝수의 합은 : " + sum); //2550
	
	//2. while문
	while(i<=100){
		if(i%2 == 0)
		sum+=i;
	}System.out.println("while문 : 1 ~ 100 사이의 수 중에서 짝수의 합은 : " + sum); //2550
	
	//3. do ~ while문
	int sum2=0, i2 = 0;
	do{
		if(i2%2 == 0) {
		sum2+=i2;
		}
		i2++;
	}while(i2<=100);
	System.out.println("do ~ while문 : 1 ~ 100 사이의 수 중에서 짝수의 합은 : " + sum2); //2550
	
	//감소하기 : 카운트다운
	for(int i = 100; i>0; i--) {
		System.out.println(i);
	}
	
	int i = 100; //초기값을 밖에서 선언
	for(       ;         ;       ) { // 초기값, 증감식 생략가능.
		if(i>0) {		 	   		// 조건식 for문 안쪽에서 선언.
		System.out.println(i);
		i--;						// 증감식 for문 마지막에 선언.
		}
	}
	
	int count = 0;
	for(int i = 100; i>=0; i-=10) {
		System.out.println(i);
		count+=1;
	}
	System.out.println("갯수는 " + count); // 갯수출력(11)
	
	//1~100사이의 수 중에서 5의 배수의 합을 구하고 카운트하여 출력하세요.
	//1-1. for문(if문)
	int i, sum = 0;
	for(i = 1;  i<=100; i++) {
		if(i%5 ==0) {
		sum+=i;
		}
	}
	System.out.println("for문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum); // 1050
	
	//1-2. for문(if문 안쓰고 5의 배수로 반복.)
	int i, sum = 0;
	for(i = 5;  i<=100; i+=5) { //
		sum+=i;
	}
	System.out.println("for문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum); // 1050
	
	//2. while문
	while(i<=100) {
		sum+=i;
		i+=5;
	}
	System.out.println("while문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum); // 1050

	//3. do ~ while문
	int sum2=0, i2 = 0;
	do{
		sum2+=i2;
		i2+=5;
	}while(i2<=100);
	System.out.println("do ~ while문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum2); //1050
	
	//문제] 1부터 1씩 증가하여 최초로 합이 3000이 넘는 정수의 값은 얼마인가?
	//1.for문
	int i, sum = 0;
	for(i = 1;  ; i++) {
		sum+=i;
		if(sum >= 3000) {
			System.out.println(i); // 77
			System.out.println(sum); // 3003
			break;
		}
	}
	
	//2. while문
	int i = 0 , sum = 0;
	while(sum<=3000) {
		i++;
		sum+=i;
	}
	System.out.println(i); // 77
	System.out.println(sum); // 3003
	
	//3. do ~ while문
	int sum2=0, i2 = 0;
	do{
		i2++;
		sum2+=i2;		
	}while(sum2<=3000);
	System.out.println(i2); // 77
	System.out.println(sum2); // 3003
	
	//문제] 구구단을 출력합니다. 2단~ 19단
	//1. for문
	int i = 1, j = 1;
	for(i=2;i<=19;i++) {
		for(j=1;j<=9;j++) {
			System.out.println(i + "x" + j + "=" +i*j);
		}
	}
	
	//2. while문
	int i = 2, j = 1;
	while(i<=19) {
		while(j<=9) {
		System.out.println(i + "x" + j + "=" +i*j);
		j++;
		}
		i++;
		j=1; //초기화!!(구구단이므로)
	}
		
	//문제] 출력을 원하는 단을 출력하도록 프로그래밍 하세요.
		
	Scanner sc = new Scanner(System.in);
	System.out.println("출력하고자 하는 구구단 단수를 입력하세요.");
	int i = sc.nextInt();
	int j = 1;
	for(j=1; j<=9;j++) {
			System.out.println(i + "x" + j + "=" +i*j);
		}
	
	//강사님 풀이
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	System.out.println("출력하고자 하는 구구단 단수를 입력하세요.");
	int gugu = Integer.parseInt((br.readLine()));
	
	System.out.println("***" + gugu + "단***");
	for(int j=1; j<=9;j++) {
			System.out.println(gugu + "x" + j + "=" +(gugu*j));
	}
	
	//문제] 구구단 중에서 홀수단을 출력하되, 단의 수만큼 출력되도록 합니다.
	for(int i=1;i<=19;i+=2) { //i의 값을 따로 2n-1 식으로 변수를 주지 않고, 증가값을 홀수값이 되도록 증가하도록 설정.
		for(int j=1;j<=i;j++) {
			System.out.println(i + "x" + j + "=" +i*j);
		}
		System.out.println();
	}
	
	//문제] 별찍기 - #을 10개씩 3줄에 출력하세요.
	//1. 노가다방법
	for(int i = 0; i<10; i++) {
		System.out.print("#");
	}
	System.out.println();
	
	for(int i = 0; i<10; i++) {
		System.out.print("#");
	}
	System.out.println();
	
	for(int i = 0; i<10; i++) {
		System.out.print("#");
	}
	System.out.println();
	
	//2. 좋은 방법
	for(int i = 0; i<3; i++) {
		for(int j = 0 ; j<10 ; j++) {
			System.out.print("#");
		}
		System.out.println();
	}
	
	//문제] 별찍기 - #을 5행으로 3개씩 출력하세요.
		for(int i = 0; i<5; i++) {
			for(int j = 0 ; j<3 ; j++) {
				System.out.print("#");
			}
			System.out.println();
		}

	//문제] 다음과 같이 출력 되도록 합니다.
	// 28   27   26
	// 25   24   23
	// 22   21   20
		int num = 28;
		for(int i = 0; i<3; i++) {
			for(int j = 0 ; j<3 ; j++) {
				System.out.print(num + "\t");   // \t : tab키
				num--;
			}
			System.out.println();
		}
	
	//문제] 다음과 같이 출력 되도록 합니다.
	// 1  2  3  4  5
	// 6  7  8  9  10
	// 11 12 13 14 15
		int num = 1;
		for(int i = 0; i<3; i++) {
			for(int j = 0 ; j<5 ; j++) {
				System.out.print(num + "\t");
				num++;
			}
			System.out.println();
		}
	
		
	//문제] 다음과 같이 출력되도록 합니다.
	// 12345
	// 12345
	// 12345
	// 12345
	// 12345
		for(int i = 0; i<5; i++) {
			for(int j = 1 ; j<=5 ; j++) {
				System.out.print(j);
			}
			System.out.println();
		}
		System.out.println();
		
		//문제] 다음과 같이 출력되도록 합니다.
		// *
		// **
		// ***
		// ****
		// *****
		for(int i = 1; i<=5; i++) {
			for(int j = 1 ; j<=i ; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println();

		//문제] 다음과 같이 출력되도록 합니다.
		// 1
		// 12
		// 123
		// 1234
		// 12345
		for(int i = 1; i<=5; i++) {
			for(int j = 1 ; j<=i ; j++) {
				System.out.print(j);
			}
			System.out.println();
		}
		System.out.println();

		//문제] 다음과 같이 출력되도록 합니다.
		// *****
		// ****
		// ***
		// **
		// *
		for(int i = 1; i<=5; i++) {
		for(int j = 5 ; j>=i ; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println();
		
		//문제] 다음과 같이 출력되도록 합니다.
		// *****
		//  ****
		//   ***
		//    **
		//     *
		for(int i = 5; i>=1; i--) {
		for(int j = 1; j<=5-i; j++) {
				System.out.print(" ");
			}
			for(int k = 1; k<=i; k++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println();
	
		//문제] 다음과 같이 출력되도록 합니다.
		// 12345
		//  1234
		//   123
		//    12
		//     1
		for(int i = 5; i>=1; i--) {
		for(int j = 1; j<=5-i; j++) {
				System.out.print(" ");
			}
			for(int k = 1; k<=i; k++) {
				System.out.print(k);
			}
			System.out.println();
		}
		System.out.println();
	
		//문제] 다음과 같이 출력되도록 합니다.
		// 1 2 3 4 5
		// 1 2 3 4
		// 1 2 3
		// 1 2
		// 1
		for(int i = 5; i>=1; i--) {
		for(int j = 1 ; j<=i ; j++) {
				System.out.print(j + " ");
			}
			System.out.println();
		}
		System.out.println();
		
		//문제] 다음과 같이 출력되도록 합니다.
		//    1    
		//   1 2
		//  1 2 3
		// 1 2 3 4
		//1 2 3 4 5
		for(int i = 1; i<=5; i++) {
			for(int j = 1 ; j<=5-i ; j++) {
				System.out.print(" ");
			}
			for(int k = 1 ; k<=i ; k++) {
				System.out.print(k + " ");
			}
			System.out.println();
		}
		System.out.println();
	
		//문제] 다음과 같이 출력되도록 합니다.
		//1 2 3 4 5    
		// 1 2 3 4
		//  1 2 3
		//   1 2
		//    1
		for(int i = 5; i>=1; i--) {
			for(int j = 1 ; j<=5-i ; j++) {
				System.out.print(" ");
			}
			for(int k = 1 ; k<=i ; k++) {
				System.out.print(k + " ");
			}
			System.out.println();
		}
		System.out.println();
		
		//문제] 다음과 같은 처리를 하도록 프로그램을 작성하세요.
		//-----------------------
		//1.예금 2.출금 3.잔액조회 4.종료
		//-----------------------
		
		//강사님 풀이법
		String str;
		String balance = null;
		int total = 0;
		boolean run = true;
			
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			
		while(run) {
		System.out.println("----------------------------");
		System.out.println("1.예금 | 2.출금 | 3.잔고 | 4.종료 ");
		System.out.println("----------------------------");
		System.out.println("선택>> ");
		str = br.readLine();
		
		switch(str) {
			
		case "1": 
			System.out.println("예금액>>");
			balance = br.readLine();
			total += Integer.parseInt(balance);
				break;
		case "2":
			System.out.println("출금액>>");
			balance = br.readLine();
			total -= Integer.parseInt(balance);
				break;
		case "3":
			System.out.println("잔고>>");
			System.out.println(total);
			break;
				
		case "4":
			run = false;
			System.out.println("프로그램을 종료합니다.");
			break;
		}
		System.out.println();
	}	
		
		
  }
}

        
        

'Bitcamp > BITCAMP - Java' 카테고리의 다른 글

5일차  (0) 2019.06.28
4일차 - 과제  (0) 2019.06.27
3일차 - 과제  (0) 2019.06.26
3일차  (0) 2019.06.26
2일차 - 과제  (0) 2019.06.26
And