주요내용 : 배열(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 |