6일차 - 과제

|
import java.util.Scanner;

public class 과제0701 {
	
	//과제1]
	private static int Facto(int num) {
		int fac = 1;
		int sum = 0;
		for(int i=1;i<=num;i++) {
			fac = fac*i; //반복횟수 10번
			sum+=fac; // 누적변수
			System.out.println(sum); //4037913
		}
		return sum;
	}
	
	//과제2]
	public void Absol(int x, int y) {
		Scanner sc = new Scanner(System.in);
		System.out.println("첫번째 수를 입력하세요.");
		int su = sc.nextInt();
		System.out.println("두번째 수를 입력하세요.");
		int su2 = sc.nextInt();
		if(su>0 && su2>0) {
			System.out.println("입력하신 수의 절대값은 = " + su + "입니다.");
			System.out.println("입력하신 수의 절대값은 = " + su2 + "입니다.");
		}else if(su>0 && su2<0) {
			System.out.println("입력하신 수의 절대값은 = " + su + "입니다.");
			System.out.println("입력하신 수의 절대값은 = " + su2*(-1) + "입니다.");
		}else if(su<0 && su2>0) {
			System.out.println("입력하신 수의 절대값은 = " + su*(-1) + "입니다.");
			System.out.println("입력하신 수의 절대값은 = " + su2 + "입니다.");
		}else if(su<0 && su2<0) {
			System.out.println("입력하신 수의 절대값은 = " + su*(-1) + "입니다.");
			System.out.println("입력하신 수의 절대값은 = " + su2*(-1) + "입니다.");
		}else if(su==0 && su2==0){ 
			System.out.println("입력하신 수의 절대값은 = 0입니다.");
		}
	}
	
	//강사님 풀이
	public static int abs(int num1, int num2) { //가인수
		if(num1>num2) return num1-num2;
		else return num2-num1;
	}
	
	//과제4]
	public static int GongAk(int x, int y) {
		Scanner sc = new Scanner(System.in);
		System.out.println("첫번째 수를 입력하세요.");
		int ga = sc.nextInt();
		System.out.println("두번째 수를 입력하세요.");
		int gb = sc.nextInt();
		int r = 1;
		while(r>0) {
			r = ga%gb;
			ga = gb;
			gb = r;
		}
		return ga;
	}
		
	//강사님 풀이(GCM공식사용)
	public static int GongAk(int x, int y) {
	int num1 = x, num2=y;
	int total = 0;
	int max = num1;
	int min = num2;
	if(num1<num2) {
		max=num2;
		min=num1;
	}
	for(int i=1; i<=min;i++) {
		if(num1%1==0 && num2%i==0) {
			total+=i;
		}
	}
	return total;
	}
	
	//과제5]
	public static void Star(int x, int y, int z) {
		int i, j, k;//지역변수, 메인 메소드 안에 들어있음.
		
		for(i=1; i<=5; i++) {
			 for(j=0; j<=4-i; j++) {
				 System.out.print(" ");
			 }for(k=1; k<=2*i-1; k++) {
				 System.out.print("*");
			 }System.out.println();
		 
		}for(i=4; i>=1; i--) {
			 for(j=0; j<=4-i; j++) {
				 System.out.print(" ");
			 }for(k=1; k<=2*i-1; k++) {
				 System.out.print("*");
			 }System.out.println();
		 }
	}
	
	//강사님풀이
	public static void Diamond(int n) {
		printStarIncrement(5);
		printStarDecrement(5);
	}
	
	public static void printStarIncrement(int n) {
		for(int i=n-1; i>=0; i--) { // 4>=0, 3>=0, 2>=0, 1>=0, 0>=0
			for(int j=0; j<i; j++) { // 0<4, 1<0, 2<0, 3<0, 4<0
				System.out.print(" "); //바깥쪽 blank(공백 = null) 출력
			}
			for(int k=1; k<2*(n-i); k++) { // 1<2*(5-4) = 1 <2 => * 1번 찍는다.
				System.out.print("*");
			}
			System.out.println();
		}
	}

	public static void printStarDecrement(int n) {
		for(int i = 1; i<n; i++) {   //1 <5, 2<5, 3<5, 4<5
			for(int j=0; j<i; j++) { // 0<1
				System.out.print(" ");
			}
			for(int k=1; k<2*(n-i); k++) { // 1<2*(5-1) => * 7번 찍는다.
				System.out.print("*");
			}
			System.out.println();
		}
	}





	@SuppressWarnings("static-access")
	public static void main(String[] args) {

//과제1] 10! 팩토리얼을 구하여 합계를 출력하세요. 단, 메소드이용하여.
		
	Facto(10);
		
		
//과제2] 두 수를 입력하여 절대값을 구하는 프로그램 작성. 단, 메소드 이용하여.
		
	int x=0, y = 0;		
	과제0701 gj = new 과제0701();
	gj.Absol(x, y);
	
	//강사님 풀이
		System.out.println(abs(10, 5)); //실인수, 5
		System.out.println(abs(5, 10));
		System.out.println(abs(-10, -5));
		System.out.println(abs(-5, -10));
		System.out.println(abs(10, -5));
	

//과제3] 클래스와 객체와 메소드의 관계를 설명하세요.
		
//		클래스는 필드(데이터)와 메소드(처리동작)가 합쳐진 객체의 집합이다.
		
/* class : 객체를 생성하여 만들기 위한 기준(틀)
 * object : 클래스에 생성한 인스턴스(= 참조변수, 객체, reference)
 * method : 기능, 동작, 행위
 * 
 * 1. 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시합니다.
 * - 종류 : public, protected, default(접근제어지시자가 없는경우:생략), private 
 * - public : 공개적인, 누구나 접근이 가능합니다. => 정보의 은닉성을 해칩니다.
 * - protected : 상속관계에 있는 객체는 접근이 가능합니다.
 * - default : 같은 패키지로 된 프로그램에서 사용할때 접근이 가능합니다. ex) void Hello() -> void 앞에 아무것도 없는경우.
 * - private : 가장 좁은 범위의 접근을 허용합니다. 
 * 2. 반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시합니다.
 * - String, int, void, float, double, <T>...
 * 3. 메소드 이름 : 메소드를 호출하기 위한 이름을 명시합니다.
 * 4. 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시합니다.
 * 5. 구현부(Impl) : 메소드의 고유 기능을 수행하는 명령문의 집합입니다.
 */
		

//과제4] 두 수의 최대 공약수를 구하여 출력하세요.(내부처리, 외부처리 각각 할것)
		
		과제0701 mg = new 과제0701(); // 클래스 객체명 = new 클래스
		int x = 0, y=0;
		System.out.println("두 수의 최대 공약수 내부처리의 합계는 = " + mg.GongAk(x, y)); // 객체명.메소드명(인자값)
		
		과제0701ms ms = new 과제0701ms(); // 클래스 객체명 = new 클래스
		int x = 0, y=0;
		System.out.println("두 수의 최대 공약수 외부처리의 합계는 = " + ms.과제0701ms(x, y)); // 객체명.메소드명(인자값)
		
		//강사님 풀이(GCM공식사용)
		과제0701 t = new 과제0701();
		Scanner sc = new Scanner(System.in);
		System.out.println("첫번째 수를 입력하세요.");
		int n1 = sc.nextInt();
		System.out.println("두번째 수를 입력하세요.");
		int n2 = sc.nextInt();
		int total = t.GongAk(n1,n2);
		System.out.println(n1 + "과" + n2 +"의 공약수들의 합은 = " + total);
		System.out.println("최대공약수들의 합은" + t.GongAk(n1,n2));
		
			

//과제5] 메소드를 이용하여 다이아몬드 테이블을 만들어 출력합니다. (반복문 활용)
//     *
//    ***
//   *****
//  *******
// *********
//  *******		
//   *****
//    ***
//     *
		
// 오른편 공백은 찍을 필요가 없다!
		
		int x = 0, y=0, z=0;
		Star(1, 0, 1);
		
		
		//강사님풀이
		Diamond(5);
		
		
		
	}


}

-----------------------------------------------------------

import java.util.Scanner;

public class 과제0701ms {

	public static int 과제0701ms(int n1, int n2) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("첫번째 수를 입력하세요.");
		int ga = sc.nextInt();
		System.out.println("두번째 수를 입력하세요.");
		int gb = sc.nextInt();
		int r = 1;
		while(r>0) {
			r = ga%gb;
			ga = gb;
			gb = r;
		}
		return ga;

	}

}

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

7일차 - 중요메소드  (0) 2019.07.02
7일차 - 생성자  (0) 2019.07.02
6일차 - 생성자  (0) 2019.07.01
6일차 - 메소드 연습6  (0) 2019.07.01
6일차 - 메소드 연습5  (0) 2019.07.01
And