5일차

|

주요내용 : 메소드, 반복문(팩토리얼 구하기, while, do ~ while, break) 마무리.

 

import java.util.Random;
import java.util.Scanner;

//------------------------------------메소드---------------------------------------
//Method(함수 = function) : 자주 반복적으로 특정 작업을 실행하기 위한 명령어들의 집합입니다.
// 명령어 : 연산자, 조건문, 반복문, 배열, 클래스, 오브젝트 등을 말합니다.
//--------------------
// 종류 4가지에 따른 분류기준
//--------------------
// 전달인자값     결과값의리턴
// -------------------
//1.  O           O   : 1번스타일
//2.  O           X   : 2번스타일
//3.  X           O   : 3번스타일
//4.  X           X   : 4번스타일
//--------------------
//메소드는 원형의 정의시에 메소드 선언부, 메소드 정의부, 메소드 호출(실행)부

public class 실습0628 {
//Field Area : 클래스 변수(전역변수; 프로그램 전체에 걸쳐서 영향을 줌), 클래스 메소드, 생성자, 메소드...
	
	/* ---------public static int Adder(int x, int y) 분석-----------
	 * 
	 * public : 공개적인(열린) : 누구든지(public, protected, private, 생략) 접근할 수 있다.
	 * static : 공유하는(클래스, 메소드, 변수)
	 * int : 정수형으로 반환하라. 
	 * Adder : 메소드명
	 * (int x, int y) : 매개변수 값.
	 * { : 메소드의 시작
	 *  ....코딩부분....
	 * } : 메소드의 끝 
	 * 
	 */
	
	//1번 메소드
	public static int Adder(int x, int y) {//1번 메소드 정의부(선언부 포함)
		int sum = x + y;
		return sum;
	}
	
	//2번 메소드
	public static void Adder(int x, int y) {//2번 메소드 정의부. void(리턴값이 없다.)
		int sum = x + y;
		System.out.println("2.style = " + sum); // 메소드에서 바로 출력.
		
	//3번 메소드
	public static int Adder() {//3번 메소드 정의부. 전달부분(매개변수) 없다.
		int x, y, sum;//
		
		Scanner sc = new Scanner(System.in);
		System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
		x = sc.nextInt(); //500
		y = sc.nextInt(); //300
		
		sum = x + y;
	
		return sum;
	}
	
	
	//4번 메소드
	public static void Adder() {//4번 메소드 정의부(선언부 포함), 리턴할필요없으므로 void
		int x, y, sum;//
		
		Scanner sc = new Scanner(System.in);
		System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
		x = sc.nextInt(); //500
		y = sc.nextInt(); //300
		
		sum = x + y;
	
		System.out.println("4.style = " + sum);
	}
	
	
	// 프로그램의 시작과 끝.
	public static void main(String[] args) {//main 메소드(프로그램 전체에 1개밖에 없음.)
	
		//1번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
		int x, y;//지역변수, 메인 메소드 안에 들어있음.
		
		Scanner sc = new Scanner(System.in);
		System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
		x = sc.nextInt(); //500
		y = sc.nextInt(); //300
			
		int result = Adder(x, y); //메소드 호출(실행)부, Adder(x,y):x,y => 전달인자값
		System.out.println("1.style = " + result);
			
		
		//2번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
		int x, y;//지역변수, 메인 메소드 안에 들어있음.
		
		Scanner sc = new Scanner(System.in);
		System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
		x = sc.nextInt(); //500
		y = sc.nextInt(); //300
			
		Adder(x, y); //메소드 호출(실행)부, 결과값 출력부분이 메소드로 옮겨져있음.

				
		//3번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
		int result = Adder(); //메소드 호출(실행)부,리턴값 없다, 결과값 출력부분이 메소드로 옮겨져있음.
		System.out.println("3.style = " + result);
		
				
		//4번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
		Adder();


		
		
//----------------------------------------반복문------------------------------------	
		
		// factorial 구하기(x!) - 입력받아서
		int i, sum=1;
		Scanner sc = new Scanner(System.in);
		System.out.println("팩토리얼 구할 수를 입력하세요.");
		int x = sc.nextInt();
		
		for(i=1; i<=x; i++) {
			sum*=i;
			System.out.println("i= " + i + ", 합계는 = " + sum);
		}
		
		// 1+2+3+4+5+6+7+8+9+10=55 출력되도록 코딩합니다. - 별찍기와 같은 원리
		for(int i = 1, j= 0; i<=10; i++) {
			j+=i; 
			System.out.print(i); // 연속되는 값 1~10 출력
			
			if(i==10) {
				System.out.print("="); // 바뀌는 연산자와 합 계산 부분.
				System.out.print(j);//결과값 출력.
			}else {
				System.out.print("+"); //반복 + 출력.
			}
		}
		
		
		
//-- while(~하는 동안에, 참인 경우에 반복 실행, 조건식 이용이나 true)
		
		//문제] Hello Java라는 문자열을 5번 반복 출력하세요. - while 문을 사용하여서 출력할것.
		String str = "Hello Java";
		int i = 1;
		while(i<=5) {
			System.out.println(str);
			i++;
		}

		//"I like Java Programming~~!!!" 를 5번 출력하세요.
		String str = "I like Java Programming~~!!!";
		int i = 1;
		while(i<=5) {
			System.out.println(str);
			++i;
		}
		
		//문제] -1+3-5+7-9+11-.....+99 = "?" 합계를 구하시오. -  while 문 사용. 
		
		//나의 풀이
		int sum = 0, i = 1, p=-1; //p:부호변환용 기호(+,-) 변수
		while(i<=50) {
			sum+=(2*i-1) * p;// sum = sum + (i * p);
			p*=-1;//p = p * -1; // 부호변환 지점(부분)
			i++;
		}
		System.out.println("부호변환이용 : " + sum); // 50
		
		//강사님 풀이
		int sum = 0, i = 1, sw=1; //(true)
		while(i<=99) {
			sw = sw* -1;
			sum = sum + (i*sw);
			i+=2;
		}
		System.out.println("true, false 이용 : " + sum); // 50
		
		//문제] 1~200 사이의 7의 배수의 합과 갯수를 구하여 출력합니다. - while 문 사용.
		int sum = 0, i = 7, count = 0;
		while(i<=200) {
				sum+=i;
				count++;
				i+=7;
		}
		System.out.println("1~200 사이의 7의 배수의 합은 : " + sum); // -50
		System.out.println("1~200 사이의 7의 배수의 갯수는: " + count); // -50
		
		//문제] 2개의 난수를 발생하여 합이 50이 되면, 프로그램을 중지하고, 아니면 계속 난수가 발생됩니다. - while문 이용.
		
		//Math.random 이용
		int num = 0, num2 = 0;
		while(num+num2 != 50) {
			num = (int)(Math.random()*50); // 50은 최대경우의 수임(0~49)
			num2 = (int)(Math.random()*50);
			System.out.println(num+num2);
		}System.out.println("합이 50이 발생하였으므로, 프로그램을 중지합니다.");

//---- do ~ while : 무조건 실행을 하고, 조건을 나중에 체크하여 거짓이면 종료,
		
		//"I Like Java Programming" 문자열을 5번 출력하세요.
		String str = "I Like Java Programming";
		int x = 1;
		do {
			System.out.println(str);
			x++;
		}while(x<=5);
		
		//1~100사이의 7의 배수의 합과 갯수를 구하여 출력합니다.
		int x= 0, sum = 0, count = 0;
		do {
			x+=7;
			sum+=x;
			count++;
		}while(x<=100);
		System.out.println("7의 배수의 합은 = " +sum);
		System.out.println("7의 배수의 갯수는 = " +count);
		
		//문제] 두 수를 입력받아서, 큰 값과 작은 값을 구별하여 출력하세요.
		Scanner sc = new Scanner(System.in);
		System.out.println("두 값을 입력하세요.");
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		do {
			if(num1 > num2) {
				System.out.println("큰 값은 = " + num1 + ", 작은 값은 = " + num2);
				break;
			} else if(num1 < num2) {
				System.out.println("큰 값은 = " + num2 + ", 작은 값은 = " + num1);
				break;
			} else
			System.out.println("두 수의 값은 같습니다.");
			break;
		}while(true);
			
		//강사님 풀이 - stop 부분에 에러있음....
		int xValue, yValue;
		String stop = null;
		do {
			if(stop == "exit") {
				System.exit(0);
			}
			Scanner sc = new Scanner(System.in);
			System.out.println("두 값을 입력하세요.");
			String num1 = sc.next();
			String num2 = sc.next();
			int x = Integer.parseInt(num1);
			int y = Integer.parseInt(num2);
			xValue = x > y ? x : y ; //큰값
			yValue = x < y ? x : y ; //작은값

			System.out.println("큰 값은 = " + xValue + ", 작은 값은 = " + yValue);
		}while(true);
		
		//문제5] 5! 팩토리얼 구하기
		int i = 1, sum=1;
		do {
			sum*=i;
			i++;
		}while(i<=5);
		System.out.println(sum);
		
		//1~100 사이에 3의 배수이면 건너뛰세요. 3의 배수가 아니면, 출력합니다.
		int i = 3;
		do {
			i++;
			if(i%3 ==0) {
				continue;
			}System.out.println(i);
		}while(i<100);
		
//--- break -----
		
		//1~100 사이의 12345 라는 숫자를 5번 반복 출력하고 탈출하세요.
		for(int i = 1;i<100;i++) {
			
			for(int j = 1 ; j<=5; j++) {
				System.out.print(j);
			}
			if(i==5) {
				break;
			}
		}
		
		//문제] 1~100 사이의 덧셈의 합 중에 합이 3000에 가장 가까운 수를 구하여 출력합니다.
		//나의 풀이 -- 3024가 왜 나오지!!!??
		int i, sum;
		for(i=0; i<=100;i++) {
			for(sum=0;sum<=3000;sum+=i) {
				i++;
			}System.out.println(sum);
		}
		
		//강사님 풀이
		int i, sum = 0, irobot = 0;
		for(i=0; i<=100;i++) {
			sum+=i;
			if(sum>=3000) {
				irobot = i;
				break;
			}
		}
		System.out.println(irobot); // 77
		System.out.println(sum); //3003
		
		//문제] 5의 배수와 7의 배수가 되는 첫번째 숫자를 구하여 출력하세요.
		//방법1 - for문
		int i;
		
		for(i=1;true;i++) {
			if(i%5==0 && i%7==0) {
				break;
			}
		}
		System.out.println(i); // 35
		
		//방법2 - while, break 사용
		int i = 0;
		
		while(true) {
			i++;
			if(i%5==0 && i%7==0) {
				break;
			}
		}
		System.out.println(i); // 35
		

		
		

		
  }
}


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

5일차 - 메소드 연습  (0) 2019.06.28
5일차 - 과제  (0) 2019.06.28
4일차 - 과제  (0) 2019.06.27
4일차  (0) 2019.06.27
3일차 - 과제  (0) 2019.06.26
And