Q.
객체를 활용한 배열 출력
명시적 생성자
제목 메소드
출력 메소드
package SelfStudy;
class Info{
private String name;
private String blood;
private String hp;
private int age;
//명시적 생성자
//!!!명시적 생성자는 void가 없다!!!
//!!!public + 클래스 네임과 동일!!!
public Info(String name, String blood, String hp, int age) {
this.name = name;
this.blood=blood;
this.hp=hp;
this.age=age;
}
//재목
public static void TITLE() {
System.out.println("이름\t혈액형\t연락처\t\t나이");
System.out.println("====================================");
}
//출력값에 get 앞에 붙이기
public void getAllOut() {
System.out.println(this.name + "\t" + this.blood + "\t" + this.hp + "\t" + "\t" + this.age );
}
}
public class ReQuiz_2021_08_16 {
public static void main(String[] args) {
//객체 배열 선언
Info info [] = new Info[2];
//명시적 생성자 배열값 할당
//!!!방법 주의
//info [i] = new Info(인자값);
info [0] = new Info("이승준", "A형", "1234567", 25);
info [1] = new Info("김수환", "B형", "654321", 26);
//제목
Info.TITLE();
//출력
for (Info info2 : info) {
//명시적 생성자 for each 출력 방법
info2.getAllOut();
}
}
}
!!! 명시적 생성자는 void 없이, public + 클래스 네임
!!! 배열 객체 값 설정법 - 객체 배열이므로 뒤에는 늘 new 값이 나온다.
※ 이미 명시적 생성자로 저장된 값이므로 get을 통해 접근
Q. ★
가족 수당: 가족수*50000(단, 4인 이상은 무조건 20만원)
시간 수당: 초과근무시간*30000(단 5시간 이상은 무조건 15만원)
실수령액: pay+가족수당+시간수당
package SelfStudy;
import java.util.Scanner;
class Emp{
//Scanner로 각각 입력받아서 계산하기
private String name;
private int pay;
private int famsu; //가족수 - 1인당 5만원, 4인 이상 20만원
private int timesu; //초과시간 - 1시간 3마누언, 5시간 이상 15만원
//getter, setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPay() {
return pay;
}
public void setPay(int pay) {
this.pay = pay;
}
public int getFamsu() {
return famsu;
}
public void setFamsu(int famsu) {
this.famsu = famsu;
}
public int getTimesu() {
return timesu;
}
public void setTimesu(int timesu) {
this.timesu = timesu;
}
//제목
public static void TITLE () {
System.out.println("***우리회사 직원 급여현황***");
System.out.println("사원명\t급여\t가족수\t초과시간\t가족수당\t시간외수당\t총급여");
}
//가족수당
public int payFamilyMem() {
int payFamilyMem = famsu * 50000;
if (famsu >= 5) {
payFamilyMem = 200000;
}
return payFamilyMem;
}
//초과근무 수당
public int payOverTime() {
int payOverTime = timesu * 30000;
if (timesu >= 5) {
payOverTime = 150000;
}
return payOverTime;
}
//총급여
//같은 클래스라서 this가 생략이 되었음
public int allPay() {
int allPay = pay + payFamilyMem() + payOverTime();
return allPay;
}
//총출력
//void 추가
public void lastPay (Emp e) {
System.out.println(name + "\t" + pay+ "\t" + famsu + "\t" + timesu + "\t" + payFamilyMem() + "\t" + payOverTime() + "\t" + allPay());
}
}
public class ReQuiz_2021_08_15 {
public static void main(String[] args) {
//변수 설정
Scanner scanner = new Scanner(System.in);
int inwon;
String name;
int pay;
int famsu;
int timesu;
//배열 선언
//!!! 객체 배열 생성 !!!
Emp arr [];
System.out.println("사원수를 입력하세요.");
inwon = Integer.parseInt(scanner.nextLine());
//배열 형식 기억하기
arr = new Emp[inwon];
//입력(수정) - getter
for (int i = 0; i < arr.length; i++) {
//!!!
//배열을 객체 인자값으로 입력받겠다고 선언
arr [i] = new Emp();
System.out.println("이름을 입력하세요.");
name = scanner.nextLine();
System.out.println("수입을 입력하세요.");
pay = Integer.parseInt(scanner.nextLine());
System.out.println("가족수를 입력하세요.");
famsu = Integer.parseInt(scanner.nextLine());
System.out.println("초과근무 시간을 입력하세요.");
timesu = Integer.parseInt(scanner.nextLine());
//Scanner 입력값 대입
//!!! 배열에 값 대입하는 형식 기억 !!!
//객체 형식 배열이므로, get 메소드 대입하는 . 방식으로
//입력한 값 전달을 위해 인자값이 존재
arr [i].setName(name);
arr [i].setPay(pay);
arr [i].setFamsu(famsu);
arr [i].setTimesu(timesu);
}
//제목 출력
Emp.TITLE();
//각 배열값 출력
for (Emp e : arr) {
e.lastPay(e);
}
}
}
Emp arr [ ];
!!! 배열 객체 생성 (클래스명으로)
arr [i] = new Emp();
!!! 배열을 객체 인자값으로 입력받겠다고 선언
arr [i].setName(name);
arr [i].setPay(pay);
!!! Scanner 입력값 대입
!!! 배열에 값 대입하는 형식 기억 !!!
!!! 객체 형식 배열이므로, set 메소드 입력하는 방식 . 방식으로
→ 객체이름.setter메소드( Scanner 인자값 )
→ arr [i].setPay(pay);
!!! 입력한 값 전달을 위해 setter 메소드에 인자값이 존재
'프로그래밍 > JAVA' 카테고리의 다른 글
2021년 8월 18일 - 상속 총복습 & 내부 클래스 & 익명 내부 클래스 & 예외 처리 try-catch (0) | 2021.08.18 |
---|---|
2021년 8월 17일 - 상속 & 명시적 생성자 상속 & 추상 Abstract 클래스 & 다형성 (0) | 2021.08.17 |
2021년 8월 13일 - 복습 & 상속 & 오버라이딩 (0) | 2021.08.13 |
2021년 8월 12일 - this( ), 생성자, 메소드, 객체 배열, call by value & reference (0) | 2021.08.12 |
2021년 8월 11일 - 객체지향 & 인스턴스 & 클래스(스태틱) & 메소드 & 생성자 - 오버로딩 & worker 메소드 (0) | 2021.08.11 |
댓글