본문 바로가기

자바

Day14

배열을 이용하여 생성자에 매개 값을 줌 으로 변수를 초기화 시켜주고 각 학생의 총점수와 평균을 구하고 반 평균 점수를 구하기 위해서 각 개인 평균값을 저장하여 배열에 저장된 수 만큼 나눠서 구한다.
package com.test02;
public class Student {	
	private String name; 
	private int kor;
	private int eng;
	private int math;
	int sum;
	double avg;
    변수가 생성자에서 초기화 될 수 있도록 생성자에 매개변수 저장
	public Student(String name, int kor, int eng, int math) {
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}
    각 학생의 총점을 더하고 합산 값을 리턴 메소드 작성
	public int total() {
		 sum = this.kor + this.eng + this.math;
			return sum;
	}
    // double 타입으로 평균을 구하기 위해 총점을 과목 수 만큼 나눈후 값을 리턴 해주는 메소드
	public double avg() {
		this.avg = (double)sum / 3;
		return this.avg;
	}			
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getKor() {
		return kor;
	}
	public void setKor(int kor) {
		this.kor = kor;
	}
	public int getEng() {
		return eng;
	}
	public void setEng(int eng) {
		this.eng = eng;
	}
	public int getMath() {
		return math;
	}
	public void setMath(int math) {
		this.math = math;
	}
	public String toString() {
		return name;
	}
}
----------------------------------------------------------------------------------------
package com.test02;
public class StudentTest {
	public static void main(String[] args) {
		//Student 객체배열을 만들고 인스턴스와 생성자 초기화 
		Student[] stu = {
			new Student("김",96,90,80),
			new Student("조",90,80,70),
			new Student("이",70,86,60),
			new Student("최",75,80,90),
			new Student("박",80,70,85),
			new Student("강",70,75,70)
		};
		double sum1 = 0;
		double avg1 = 0;
		// 개인 총점과, 개인평균을 구하기 위한 반복문 작성 
		for(int i =0; i <stu.length; i++) {		
			System.out.println("["+i+"]"+stu[i]+"-> 개인 총점: "+stu[i].total()+", 개인 평균:"+stu[i].avg());
			//sum1과 출력문의 순서가 바뀌게 된다면 avg() 메서드안에 개인 총점 점수가 저장되어있지않기 때문에 avg1값은 0이 출력된다.
			sum1 += stu[i].avg();
		}
		//반평균을 구하기 위해  저장된 개인 평균 값에 배열의 수 만큼 나눠주면 반 평균 점수가 된다./
			avg1 = sum1 / stu.length;
		System.out.println("반 평균: "+avg1);						
	}
}

 

상속을 이용하여  부모 클래스의 메소드를 오버라이딩 하고, 생성자를 정의하여 인스턴스 변수를 초기화 한 예제
부모 클래스 정의
package com.test01;
public class Person {
	String name;
	//주민등록 번호 rrn(resident registration number)
	String rrn;
	int age;	
	String gender;
	public Person(String name, String rrn,int age,String gender) {
		this.name = name;
		this.rrn = rrn;	
		this.age = age;
		this.gender = gender;
	}
	public String toString() {
		return "저는 "+name+" 입니다."+age+" 살 입니다.";
	}
	public void genderCheck() {
		if(gender.equals("남자")) {
			System.out.println("남자입니다.");
		}else if(gender.equals("여자")){
			System.out.println("여자입니다.");
		}else {
			System.out.println("올바른 성별을 입력해주세요.");
		}
	}
}
======================================================================================
자식 클래스 정의
package com.test01;
public class Male extends Person{
	public Male(String name, String rrn,int age,String gender) {
		super(name,rrn,age, gender);
	}
	public String toString() {
		return "저는 "+name+" 입니다."+gender+" 이고 "+age+" 살 입니다.";
	}
}
=======================================================================================
자식 클래스 정의
package com.test01;
public class Female extends Person{
	public Female(String name, String rrn, int age,String gender) {
		super(name, rrn, age, gender);
	}
	public String toString() {
		return "저는 "+name+" 입니다."+gender+" 이고 "+age+" 살 입니다.";
	}
}
========================================================================================
구현부 클래스 
package com.test01;
public class PersonTest {
	public static void main(String[] args) {
    
    male,femal 인스턴스 생성하면서 변수를 초기화 
		Person male = new Male("강감찬","2000-1",30,"남자");
		Person female = new Female("릴리","2000-2",29,"여자");
		Person male2 = new Male("이순신","2001-1",31,"남");
        toString함수를 오버라이딩 하여 객체 인스턴스를 호출.
		System.out.println(male);
		System.out.println(female);
        성별을 구분해주는 check메소드 
        gender 변수를 이용하여 조건문에서 "남자"라는 값이 입력되면 남자입니다 출력
        "여자"일 경우 여자입니다 출력 '남자' or '여자' 값이 입력되지 않는다면 성별을 다시 확인 
        하라는 출력문으로 구성 
		male.genderCheck();
		female.genderCheck();
		male2.genderCheck();
	}
}

 

조건문을 이용하여 나이의 값을 받아 예방 접종 대상을 구분하고 건강검진 대상 여부를 판별하게 해주는 예제

package com.test01;
public class Member {
	String name;
	String ph;
	String major;
	int grade;
	String email;
	int birth;
	String address;
	public Member(String name, String ph, String major, int grade, String email) {
		this.name = name;
		this.ph = ph;
		this.major = major;
		this.grade = grade;
		this.email = email;
	}
	public Member(String name, String ph, String major, int grade, String email, int birth, String address) {
		this(name, ph, major, grade, email);
		this.birth = birth;
		this.address = address;
	}
	public int checkBirth() {
    //birth 초기값이 0이 될 수 없도록 조건문 설정
		if (birth != 0) {
        // 15세미만 65세이상 만 가능한 조건 
			if (2006 <= birth || birth <= 1956) {
				System.out.println("무료 예방접종이 가능합니다.");
			} else {
				System.out.println("무료 접종 대상이 아닙니다.");
			}
		} else {
			System.out.println("출생연도를 입력해주세요.");
		}
		return birth;
	}
	public int testBirth() {
		if (birth != 0) {
			// 대한민국 20세 이상
			if (birth < 2001) {
				// 무료로 2년마다 건강검진을 받을 수 있고
				System.out.println("무료로 2년마다 건강 검진을 받을 수 있습니다.");
				// 짝수해에 태어난 사람은 올해가 짝수년이라면 검사 대상이 되고
				if (birth % 2 == 0) {
					System.out.println("올해 건강검진 대상자 입니다.");
				}
				// 40이상의 경우는 암 검사도 무료로 검사를 할 수 있다.
				if (birth < 1982) {
					System.out.println("40세 이상이므로 암 검사도 무료로 검사를 할 수 있습니다.");
				}
			}
		} else {
			System.out.println("출생연도를 기입해주세요.");
		}
		return birth;
	}
	public void info() {
		System.out
				.println(name + ", " + ph + ", " + major + ", " + grade + ", " + email + ", " + birth + ", " + address);
	}
}
========================================================================================================================================
package com.test01;
public class MemberTest {
	public static void main(String[] args) {
		Member member = new Member("홍길동","010-123-1234","전기",3,"111@111.com");
		Member member1 = new Member("이순신","010-321-4321","전자",1,"222@222.com",1995,"서울");
		member.checkBirth();
		member.testBirth();
		member.info();
		System.out.println("============================================================");
		member1.checkBirth();
		member1.testBirth();	
		member1.info();			
	}
}

'자바' 카테고리의 다른 글

Day18  (0) 2021.05.28
Day 16  (0) 2021.05.26
Day13  (0) 2021.05.21
Day12  (0) 2021.05.20
Day11  (0) 2021.05.18