9일차

|

주요내용 : 배열(3차원), 상속

		//배열에서 원하는 데이터 찾기
		//임의의 수를 10개 입력하고, 찾고자 하는 데이터의 위치가 어디인지를 찾아서 인덱스를 출력하세요.
		int su, i;
		int num[] = new int[10];
		Scanner sc = new Scanner(System.in);
		System.out.println("10개의 정수형 데이터를 입력해 주세요 : ");
		for(i=0;i<num.length; i++) {
			num[i]=sc.nextInt();
		}
		System.out.println();
		System.out.println("찾을 데이터를 입력하세요.");
		su = sc.nextInt();
		for(i=0; i<num.length;i++)
			if(num[i]==su)
				break;
		if(i!=num.length)
			System.out.println("숫자의 위치한 곳의 배열의 위치는 = " + (i+1));
		else
			System.out.println("숫자를 찾지 못하였습니다.");
		
		
		//문제] 30명의 학생에게 주변음식점에 대한 만족도를 조사했습니다. -- 문제해결 및 강사님 풀이법 추가할것.
		//조사한 결과를 출력하세요.
		//기준 : 5(매우만족) 4(만족) 3(보통) 2(불만) 1(매우불만족)
		//결과 : 5:10명        4:5명     3:10명     2:2명     1:3명
//		int sur[][] = new int[1][4];
//		System.out.println("============================================");
//		System.out.println("  \t매우만족\t만족\t보통\t불만\t매우불만족");
//		System.out.println("============================================");
//		System.out.print("기준\t");
//		int num=5;
//		for(int i=0; i<sur[0].length; i++) { 
//			sur[0][i]=num; 
//			num--;
//			}
//		for(int i=0; i<sur[0].length;i++) { //열증가
//			System.out.print(sur[0][i] + "\t"); //title 출력
//			}
//		System.out.println();
//		System.out.print("결과\t");
//		for(int i=0;i<sur[1].length;i++) {
//			sur[1][i] = (int) (Math.random()*30);
//		}
//		for(int i=0;i<sur[1].length;i++) {
//			System.out.print(sur[1][i] +"명  ");
//		}
		
		//강사님 풀이법
		int response[] = {5,2,3,1,1,5,5,5,2,3,1,4,5,4,3,2,4,5,2,1,1,2,3,4,5,5,4,3,2,1};
		int frenquency[] = new int[5];//응답유형5가지
		
		for(int i=0; i<response.length; i++) {
			if(response[i]==1) //1점
				++frenquency[0];
			else if(response[i]==2) //2점
				++frenquency[1];
			else if(response[i]==3) //3점
				++frenquency[2];
			else if(response[i]==4) //4점
				++frenquency[3];
			else
				++frenquency[4];//5점
		}
		//출력
		for(int j=0; j<frenquency.length; j++) {
			System.out.println(j + ":" + frenquency[j]);
		}
		
		//배열이름을 이용한 주소 복사
		//->부작용(side effect) : 하나의 메모리를 공유할때, 예상하지 못한 일이 발생하는 현상.
		int[] num1 = {10, 20, 30, 40, 50};
		int[] num2;
		num2 = num1; // num1의 배열의 시작 주소 복사
		for(int i=0; i<num2.length; i++) {
			num2[i]++; //1을 증가시켜서 복사
		}
		for(int j=0; j<num1.length; j++) {
			System.out.println("num[" + j +"]" + num1[j]);
		}
				
		
		//다음과 같은 출력을 하는 프로그램을 작성합니다.
		// 1 -1 1 -1 1
		// 0 -1 1 -1 1
		// 0 0 -1 1 -1
		// 0 0 0 1 -1
		// 0 0 0 0 1
		int array[][] = new int[5][5];
		int temp=1;
		//저장
		for(int i=0; i<5; i++) {
			for(int j=i; j<5; j++) { 
				array[i][j]=temp;
				temp*=(-1);
			}
		}
		//출력
		for(int i=0; i<5; i++) {
			for(int j=0; j<5; j++) {
				System.out.print(array[i][j]+" ");
			}System.out.println();
		}
		
		
		//다음과 같은 출력을 하는 프로그램을 작성합니다.
		// 1 4 9 16 25
		// 0 36 49 64 81
		// 0 0 100 121 144
		// 0 0 0 169 196
		// 0 0 0 0 225
		int array[][] = new int[5][5];
		int temp=0;
		//저장
		for(int i=0; i<5; i++) {
			for(int j=i; j<5; j++) {
				temp++;                 ////////// 순서만 바로 아래와 바꿔주면 되었음..
				array[i][j]=temp*temp;
			}
		}
		//출력
		for(int i=0; i<5; i++) {
			for(int j=0; j<5; j++) {
				System.out.print(array[i][j]+" ");
			}System.out.println();
		}
		
		//bitcamp hotel을 증축하여 5층이고, 각 층의 호실은 7개씩 있습니다.
		//투숙객은 다음과 같이 있다면, 전체 인원수와 각층의 평균 인원수는 얼마인가요?
		//[data]
		//     1호실 2호실 3호실 4호실 5호실 6호실 7호실  각층의총합  각층의평균인원수
		//5층 :
		//4층 :
		//3층 :
		//2층 :
		//1층 :
		
//		Random ran = new Random();
//		int bh[][] = new int[5][9];
//		int sum=0, avg = 0;
//		System.out.println("======================================================================================");
//		System.out.println("\t1호실\t2호실\t3호실\t4호실\t5호실\t6호실\t7호실\t총합\t평균");
//		System.out.println("======================================================================================");
//		System.out.print("5층\t");
//		for(int i=0; i<7; i++) { 
//			bh[0][i]=ran.nextInt(5)+1; 
//			}
//		for(int i=0; i<7;i++) { //열증가
//			System.out.print(bh[0][i] + "\t"); //title 출력
//			}
//		for(int i=0; i<7; i++) { 
//			sum+=bh[0][i]; 
//			}
//		bh[0][7] = sum;
//		avg = sum/7;
//		bh[0][8] = avg;
//		System.out.print(bh[0][7] + "\t");
//		System.out.print(bh[0][8]);
//		System.out.println();
		
		
		
		
		//1차원과 2차원의 혼합방식
		//다음과 같이 성적이 있습니다. 이름은 1차원 배열로 하고, 데이터는 2차원 배열로 합니다.
		//총점과 평균을 구하여 출력하세요.
		//[data]
		//기섭  은지  홍수
		// 90  90  90
		// 80  85  75
		// 70  60  90
		String name[] = new String[3]; //이름배열 사용
		int sung[][] = new int[3][3]; //성적배열 사용
		int sum = 0, avg = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("이름을 입력하세요.");
		for(int i=0; i<name.length; i++) {
			name[i]=sc.next();
		}
		System.out.println("국어, 영어, 수학 데이터를 입력해 주세요. : ");
		for(int i=0; i<sung.length; i++) {
			for(int j=0; j<sung.length; j++) {
				sung[i][j] = sc.nextInt();
			}
		}
		System.out.println("\t성적표");
		System.out.println("=========================");
		System.out.println("번호 이름 국어 영어 수학 총점 평균");
		System.out.println("=========================");
		for(int i=0; i<sung.length; i++) {
			System.out.print(" " + (i+1) + " ");
			System.out.print(name[i] + " ");
			for(int j=0; j<sung.length; j++) {
				System.out.print(sung[i][j] + " ");
				sum+=sung[i][j];
				avg = sum/3;
			}
			System.out.print(sum + " ");
			System.out.print(avg);
			System.out.println();
			sum=0;
			avg=0;
		}
		System.out.println("---------------------------");
		
		
		
		
		//3차원 배열 : 면중심, [면][행][열] :주사위(6면, 각행과 열이 존재)
		// int [][][] sam = new int[3][2][4]; // -> 2행 4열짜리가 3개있다.(=2차원 배열이 3개가 존재)
		int [][][] sam = {
				{{1,2,3,4}, {3,4,5,6}},
				{{10,20,30,40},{5,7,9,11}},
				{{11,21,31,41},{51,71,91,111}},
			};
		for(int i =0; i<sam.length; i++) {
			for(int j=0; j<sam[i].length; j++) {
				for(int k=0; k<sam[i][j].length; k++) {
					System.out.println("sam[" + i + "][" + j +  "][" + k + "]=[" + sam[i][j][k] + "]");
				}
				System.out.println();
			}
			System.out.println();
		}
        
        
//-----------------------------------------상속---------------------------------------

package OOP;

/* 클래스 : 객체를 사용하기 위한 틀.
 * 객체 : 데이터를 처리하기 위한 틀.
 * 메소드 : 객체가 가지고 있는 데이터를 어떤 형태로 가공처리하기 위한 틀.
 * 메소드오버로딩 : 서로 다른 역할을 하지만, 이름은 반드시 메소드명이 같다.
 * 생성자 : 클래스 단위 처리하는 데이터를 저장하여 초기화하는 역할.(클래스 변수)
 * 생성자(메소드) 오버로딩 : 서로 다른 역할을 하지만, 이름은 반드시 클래스명과 같아야 한다.
 * 상속 : 부모클래스와 자식클래스간의 관계성 , extends, implements
 *  public class A extends B { -> class 하위클래스명 extends 상위클래스
 *  public class A extends B implements C, D, E...{ //다중 상속의 효과.
 *  public interface A extends B {
 *  
 * 메소드 오버라이딩 : 두 클래스가 상속관계 일 때, 메소드를 오버라이딩하여 사용할 수 있습니다.
 *  인터페이스를 이용하여 상속도 가능합니다.
 * 인터페이스 : 
 * 추상클래스 : 
 * 내부클래스 :   
 * 다형성 : 
 */



//1. 엄마와 아빠의 용돈을 합산하여 출력하세요. 단, 상속이용.
//class Parent{ // 부모클래스
//	//1.20000
//	
//	static int dad; //5
//	
//	Parent(int dad){ //생성자 이름은 클래스 이름과 동일해야한다.
//		this.dad = dad; //5
//	}
//}
//
//class Child extends Parent{ // 자식클래스
//	static int dad, mom;
//	int sum;
//                     //2     5
//	public Child(int dad, int mom) {
//		super(dad); //2
//		this.mom = mom; //5
//	} 
//	
//	public void add() {
//		sum = dad + mom ; // 5 + 2 = 7
//	}
//
//	public void display() {
//		System.out.println("용돈의 합계: " + sum);
//	}
//	
//}

//2. 엄마(20000원), 아빠(50000원) = 70000원

class Person { // 파더와 마더의 최상위클래스
	
	private int money; //4. m.mother : 50000, f.father : 30000 저장

	public Person() {
		
	}
	
	public Person(int money) {
		this.money = money;  //3. 전달받아서 저장함.
	}
	
	public int getMoney() { //5. 50000원, 30000원 저장.
		return money;
	}
	
	public void setMoney(int money) {
		this.money = money;
	}
	
}

class Mother extends Person{ //마더 왔더니 상위클래스 퍼슨으로 가라고 되어있음.

	public Mother() {
		super(); //2. 상위클래스에 전달
	}
	
	public Mother(int money) {
		super(money);
	}
	
}

class Father extends Mother{ //파더 왔더니 상위클래스 마더로 가라고 되어있음.

	private int dad; //30000
	private int mom;
	private int sum;

	public Father() {
		super();
	}
	
	public Father(int money) {
		super(money);
	}
	
	protected void add() {
		sum = mom + dad; //80000 기억
	}
	
	protected void output() {
		System.out.println("용돈의 합계는 = " + sum);
	}
	
}

public class InherSample1 extends Father {

	public InherSample1(int dad) {
		super(dad);
	}

	public static void main(String[] args) {
		
		//1. 엄마와 아빠의 용돈을 합산하여 출력하세요. 단, 상속이용.
//		Child c = new Child(20000, 50000);
//		c.add();
//		c.display();
		
		//2. 엄마(30000원), 아빠(50000원) = 80000원
		//   Mother()      Father()
		Mother m = new Mother(50000); //1. 클래스에서 넘김
		Father f = new Father(30000);
		int res1 = m.getMoney();
		int res2 = f.getMoney();
		int res3 = res1 + res2;
//		System.out.println(m.getMoney());
//		System.out.println(f.getMoney());
//		m.setMoney(4500); // m이 마더이므로, setMoney로 던져주면. -> 마더로 리턴.
		System.out.println("합계는 " + res3 + "원 입니다.");
		
/* 상위클래스 : Person
 * 하위클래스 : Mother, Father
 * super : 상위클래스의 객체를 가리킨다.
 * this : 자기자신의 클래스의 객체를 가리킨다.
 * 
 */
		
		

	}

}

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

package OOP;

import java.util.Scanner;

class Parent1 {
	public void Divi2(int su1, int su2){
		int sum = su1 % su2;
		System.out.println("나누기(나머지)  : " + sum);
	}
}

class Parent2 extends Parent1{
	public void Divi(int su1, int su2){
		int sum = su1 / su2;
		System.out.println("나누기 (몫) : " + sum);
	}
}

class Parent3 extends Parent2{
	public void Multi(int su1, int su2){
		int sum = su1 * su2;
		System.out.println("곱하기  : " + sum);
	}
}

class Parent4 extends Parent3{
	public void Minus(int su1, int su2){
		int sum = su1 - su2;
		System.out.println("빼기  : " + sum);
	}
}

class Child extends Parent4{
	public void Plus(int su1, int su2){
		int sum = su1 + su2;
		System.out.println("더하기  : " + sum);
	}
}



public class InherSample2 {

	public static void main(String[] args) {
		
		//가감승제산을 상속을 이용하여 풀어보세요.
		// Child class, Parent1, Parent2, Parent3, Parent4
		
		Child c = new Child();
		Scanner sc = new Scanner(System.in);
		System.out.println("두 수를 입력하세요.");
		int su1 = sc.nextInt();
		int su2 = sc.nextInt();
		
		c.Plus(su1, su2);
		c.Minus(su1, su2);
		c.Multi(su1, su2);
		c.Divi(su1, su2);
		c.Divi2(su1, su2);

	}

}


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

package OOP;

import java.util.Scanner;

class P3{
	public void Com(int commition){
		System.out.println("수당: " + commition +"원");
	}
}

class P2 extends P3{
	public void Sal(int salary){
		System.out.println("연봉: " + salary +"원");
	}
}

class P1 extends P2{
	public void Dep(String dept){
		System.out.println("부서 : " + dept +"팀");
	}
}

class don extends P1{
	public void Nam(String name){
		System.out.println("이름 : " + name +"님");
	}
}


//이름과 부서, 그리고 연봉, 수당을 입력받아서 연산하는 프로그램
public class InherSample3 {
	
//	private static String name;
//	private static String dept;
//	private static int salary;
//	private static int commition;

	public static void main(String[] args) {
		
		don c = new don();
		Scanner sc = new Scanner(System.in);
		System.out.println("이름, 부서, 연봉, 수당을 입력하세요.");
		String name = sc.next();
		String dept = sc.next();
		int salary = sc.nextInt();
		int commition = sc.nextInt();
		
		c.Nam(name);
		c.Dep(dept);
		c.Sal(salary);
		c.Com(commition);

	}

}

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

10일차 - 상속  (0) 2019.07.05
9일차 - 과제  (0) 2019.07.05
8일차 - 과제  (0) 2019.07.03
8일차 - 배열(2차원)  (0) 2019.07.03
8일차 - 배열(1차원)  (0) 2019.07.03
And