✿∘˚˳°∘°
12일차 : 객체지향프로그래밍 - 회원(포인트)관리 프로그램 본문
2022/12/13
1 - 1 ) 회원관리프로그램v1(클래스 : 실행/기능제공/vo) - 등급은 silver만
VO : Silver.java
(bonus는 point에 따라 달라지는 값이므로 변수로 선언하지않고 getter로 가능)
package kh.java.vo;
public class Silver {
private String grade;
private String name;
private int point;
//private double bonus;
//변수로 관리하게되면 수정이 힘들다 - 보너스는 포인트에 종속되어있기때문에 딱히 작성할 필요x
//getter만 작성햐여 리턴을 point*0.02를 해준다(getter는 다른클래스에서 사용하기위해사용)
//기본생성자
public Silver() {
}
//매개변수가 있는 생성자
public Silver(String grade, String name, int point) {
this.grade = grade;
this.name = name;
this.point = point;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public double getBonus() {
return point*0.02;
}
/*
public void setBonus(double bonus) {
this.bonus = bonus;
}*/
}
Controller : PointMgr.java
- 내가 작성한 코드
package kh.java.controller;
import java.util.Scanner;
import kh.java.vo.Silver;
public class PointMgr {
private Scanner sc; //Scanner도 silver[]도 참조형이므로 초기값null이 들어있다
private Silver[] members; //실버를 여러개 관리
private int index;
public PointMgr() {
sc = new Scanner(System.in);
members = new Silver[10];
//전역변수에 작성해도 되지만 배열에 1~100까지 넣고싶거나할때 for문을 사용하면
//전역변수위치에서 for문같은 복잡한걸 사용하면 에러 -> 생성자에서는 가능하므로 여기서
//위에서는 선언만, 사용할준비는 생성자에서
index = 0;
}
public void main() {
while(true) {
System.out.println("==== 회원 관리 프로그램v1 ====");
System.out.println("1. 회원 등록 ");
System.out.println("2. 회원 전체 출력");
System.out.println("3. 선택 회원 출력");
System.out.println("4. 회원 정보 수정");
System.out.println("5. 회원 삭제");
System.out.println("0. 프로그램 종료");
System.out.print("선택 > ");
int sel = sc.nextInt();
switch(sel) {
case 1:
insertMember();
break;
case 2:
printAllMember();
break;
case 3:
printOneMember();
break;
case 4:
updateMember();
break;
case 5:
deleteMember();
break;
case 0:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("잘못입력하셨습니다.");
break;
}
}
}
public void insertMember() {
System.out.println("==== 회원 정보 입력 ====");
System.out.print("등급 : ");
String grade = sc.next();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("포인트 : ");
int point = sc.nextInt();
Silver s = new Silver();
s.setGrade(grade);
s.setName(name);
s.setPoint(point);
members[index] = s;
index++;
}
public void printAllMember() {
System.out.println("==== 회원 정보 출력(전체) ====");
System.out.println("등급\t이름\t포인트\t보너스");
System.out.println("====================");
for(int i=0; i<index; i++) {
Silver s = members[i];
System.out.println(s.getGrade()+"\t"+s.getName()+"\t"+s.getPoint());
}
}
public void printOneMember() {
System.out.println("==== 회원 정보 출력(1명) ====");
System.out.print("조회할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchIndex(name);
if(searchIndex == -1) {
System.out.println("회원정보를 출력할 수 없습니다.");
}else {
Silver s = members[searchIndex];
System.out.println("이름 : "+s.getName());
System.out.println("등급 : "+s.getGrade());
System.out.println("포인트 : "+s.getPoint());
}
}
public void updateMember() {
System.out.println("==== 회원 정보 수정 ====");
System.out.print("수정할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchIndex(name);
if(searchIndex != -1) {
System.out.print("수정할 이름 입력 : ");
String updateName = sc.next();
System.out.print("수정할 등급 입력 : ");
String updateGrade = sc.next();
System.out.print("수정할 포인트 입력 : ");
int updatePoint = sc.nextInt();
Silver s = new Silver();
s.setGrade(updateGrade);
s.setName(updateName);
s.setPoint(updatePoint);
members[searchIndex] = s;
System.out.println("회원정보수정완료!");
}else {
System.out.println("회원정보를 조회할 수 없습니다.");
}
}
public void deleteMember() {
System.out.println("==== 회원 삭제 ====");
System.out.print("삭제할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchIndex(name);
if(searchIndex == -1) {
System.out.println("회원정보를 조회할 수 없습니다.");
}else {
for(int i=searchIndex; i<index-1; i++) {
members[i] = members[i+1];
}
index--;
members[index] = null;
System.out.println("회원삭제완료!");
}
}
public int searchIndex(String name) {
for(int i=0; i<index; i++) {
if(members[i].getName().equals(name)) {
return i;
}
}
return -1;
}
}
- 강사님 실습 코드
package kh.java.controller;
import java.util.Scanner;
import kh.java.vo.Silver;
public class PointMgr2 {
Scanner sc;
Silver[] members;
int index;
public PointMgr2() {
sc = new Scanner(System.in);
members = new Silver[10];
index = 0;
}
public void main() {
while(true) {
System.out.println("==== 회원 관리 프로그램v1 ====");
System.out.println("1. 회원 등록 ");
System.out.println("2. 회원 전체 출력");
System.out.println("3. 선택 회원 출력");
System.out.println("4. 회원 정보 수정");
System.out.println("5. 회원 삭제");
System.out.println("0. 프로그램 종료");
System.out.print("선택 > ");
int sel = sc.nextInt();
switch(sel) {
case 1:
insertMember();
break;
case 2:
printAllMember();
break;
case 3:
printOneMember();
break;
case 4:
updateMember();
break;
case 5:
deleteMember();
break;
case 0:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("잘못입력하셨습니다.");
break;
}
}
}
public void insertMember() {
System.out.println("==== 회원 정보 등록 ====");
System.out.print("등급입력[silver] : ");
String grade = sc.next();
System.out.print("이름 입력 : ");
String name = sc.next();
System.out.print("포인트 입력 : ");
int point = sc.nextInt();
/*
Silver s = new Silver(); //스택에 참조형변수 s의 자리가 생기고 s는 silver의 주소를 참조하고있다.
s.setGrade(grade);
//silver.java의 grade변수가 private로 선언되어있으므로 접근x -> setter를 이용한접근
s.setName(name);
s.setPoint(point);
s.setBonus(point*0.02);
*/
// 또는 이렇게 매개변수가있는 생성자를이용해도 OK
Silver s = new Silver(grade, name, point);
// Silver s = new Silver(grade, name, point, point*0.02);
members[index] = s; //입력받은 값을 members[]라는 Silver타입 여러개를 저장하는 배열에 넣어준다.
index++;//넣을때마다 자동으로 배열의 위치를 알려주기위해 사용하는 변수
System.out.println("회원 정보 등록 완료!");
}
public void printAllMember() {
System.out.println("==== 회원 정보 출력(전체) ====");
System.out.println("등급\t이름\t포인트\t보너스");
System.out.println("=====================");
for(int i=0; i<index; i++) { //i<members.length로하면 비어있는배열도 출력될테니까 지정해준index까지
Silver s = members[i];//members[0]을 silver타입의 s에 넣은것
//silver배열이 있는데 배열인덱스마다 각각 주소를 참조하고 있을것
//s를 만들면 같은데이터를 바라보게 만듬(얕은복사개념으로 이해하면된다)
System.out.println(s.getGrade()+"\t"+s.getName()+"\t"+s.getPoint()+"\t"+s.getBonus());
//String name = s.getName(); members[i].getName()으로 작성해도된다.
}
}
public void printOneMember() {
System.out.println("==== 회원 정보 출력(1명) ====");
System.out.print("조회할 회원 이름 입력 : ");
String searchName = sc.next();
int searchIndex = searchIndex(searchName);
if(searchIndex != -1) {
System.out.println("이름 : "+members[searchIndex].getName());
System.out.println("등급 : "+members[searchIndex].getGrade());
System.out.println("포인트 : "+members[searchIndex].getPoint());
}else {
System.out.println("회원정보를 조회할 수 없습니다.");
}
}
public void updateMember() {
System.out.println("==== 회원 정보 수정 ====");
System.out.print("회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchIndex(name);
if(searchIndex == -1) {
System.out.println("회원 정보를 조회할 수 없습니다.");
}else {
System.out.println("변경할 등급 입력 : ");
String updateGrade = sc.next();
System.out.print("변경할 이름 입력 : ");
String updateName = sc.next();
System.out.println("변경할 포인트 입력 : ");
int updatePoint = sc.nextInt();
//Silver s = members[searchIndex];
//s.setGrade(updateGrade);
members[searchIndex].setGrade(updateGrade);
members[searchIndex].setName(updateName);
members[searchIndex].setPoint(updatePoint);
System.out.println("정보 수정 완료!");
}
}
public void deleteMember() {
System.out.println("==== 회원 정보 삭제 ====");
System.out.print("회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchIndex(name);
if(searchIndex == -1) {
System.out.println("회원정보를 조회할 수 없습니다.");
}else {
for(int i=searchIndex; i<index-1; i++) {
members[i] = members[i+1];//빈칸없이 앞으로 당기기(덮어쓰기)
}
index--;//다 당기고나면 members[5] == members[6]이 되므로 인덱스를 당기고 데이터를 null로 변경
members[index] = null;
}
}
public int searchIndex(String searchName) {
for(int i=0; i<index; i++) {
//Silver s = members[i];
//String name = s.getName()
//if(name.equals(searchName)){ }
if(members[i].getName().equals(searchName)) {
return i;
}
}
return -1;
//배열에서 절대쓰지못하니까 조회할수없을경우 -1리턴
//0~양수는 배열크기가 커지면 사용할 가능성이 있음
}
}
1 - 2 ) 회원관리프로그램v2(클래스 : 실행/기능제공/vo) - 등급 silver, gold, vip
상속(inherit) : 다른클래스가 가지고있는 멤버(변수와메소드)들을 새로 작성할 클래스에서 직접만들지않고 상속받아
-장점 : 코드를 공통적으로관리(추가/수정용이), 중복제거(생산성,유지보수용이), 적은양의 코드로 새클래스생성
-방법 : [접근제어지시자]class 클래스B extends 클래스A{ }
클래스B : 자식클래스/후손클래스/서브클래스/파생클래스/상속받는클래스 - 부모클래스의 그대로 가져와 사용가능
클래스A : 부모클래스/선조클래스/슈퍼클래스/선조클래스/상속하는클래스
-단일상속 : 하나의 클래스만 상속가능, 명확하고 신뢰성있는 코드작성이 가능하다(자바는 단일상속)
B(자식)가 A(부모)를 상속받고 C(자식)가 B(부모)를 상속받게하여 사용
-super() : 부모객체의 생성자를 호출하는 메소드
-자바의 모든클래스들은 자동적으로 Object를 상속
오버라이딩 : 자식클래스가 상속받은 부모 메소드를 재작성하는것(오버로딩과구분!)
부모가 제공하는 기능을 후손이 일부 고쳐서 사용
VO : Silver.java(부모클래스)
package kh.java.vo;
public class Silver {
private String grade;
private String name;
private int point;
//Alt+Shift+S(or 마우스우클릭-Source) generate Constructors for superclass
public Silver() {
super();
}
public Silver(String grade, String name, int point) {
super();
this.grade = grade;
this.name = name;
this.point = point;
}
//Alt+Shift+S(or 마우스우클릭-Source) generate getter/setter
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public double getBonus() {
return point*0.02;
}
}
VO : Gold.java(자식클래스, Silver를 종속받음)
package kh.java.vo;
public class Gold extends Silver{
public Gold() {
super();
// TODO Auto-generated constructor stub
}
public Gold(String grade, String name, int point) {
super(grade, name, point);
// TODO Auto-generated constructor stub
}
@Override
public double getBonus() {
return getPoint()*0.05;
}
}
VO : Vip.java(자식클래스, Silver를 종속받음)
package kh.java.vo;
/*
상속(inherit) : 다른클래스가 가지고있는 멤버(변수와메소드)들을 새로 작성할 클래스에서 직접만들지않고 상속받아
-장점 : 코드를 공통적으로관리(추가/수정용이), 중복제거(생산성,유지보수용이), 적은양의 코드로 새클래스생성
-방법 : [접근제어지시자]class 클래스B extends 클래스A{
클래스B : 자식클래스/후손클래스/서브클래스/파생클래스/상속받는클래스 - 부모클래스의 그대로 가져와 사용가능
클래스A : 부모클래스/선조클래스/슈퍼클래스/선조클래스/상속하는클래스
-단일상속 : 하나의 클래스만 상속가능, 명확하고 신뢰성있는 코드작성이 가능하다(자바는 단일상속)
B(자식)가 A(부모)를 상속받고 C(자식)가 B(부모)를 상속받게하여 사용
-super() : 부모객체의 생성자를 호출하는 메소드
-자바의 모든클래스들은 자동적으로 Object를 상속
*/
//Vip : 자식클래스 / Silver : 부모클래스
public class Vip extends Silver{
//Silver에 있는 변수와 메소드를 모두 가져옴
//아무것도 작성하지않았지만 PointMgr에서 Silver에 있는 변수,메소드를 Vip객체로도 사용할 수 있다.
//Silver가 Object를 상속하고 있으므로 Vip는 Silver/Object를 모두사용가능
public Vip() {
super();//부모의 생성자호출
//vip는 silver를 상속한 상태 -> vip를 만들기 위해서는 silver가 먼저 만들어져야 하기때문에
//작성하지않아도 자동으로 돌아감
}
//눈에보이진않지만 silver의 변수들을 얘도 가지고있으므로 매개변수로 적어줘야한다.
//부모의 private변수에 접근은X -> getter/setter이용
//protected 변수는 상속한애도 접근이 가능
public Vip(String grade, String name, int point) {
super(grade, name, point);//부모생성자 중 매개변수 있는 생성자
//슈퍼가 제일먼저 동작해야함 -> 슈퍼보다 먼저오는 코드가 있으면 안됨
//super(매개변수)가 다받아오므로 아래코드를 작성할 필요x
/*
setGrade(grade);
setName(name);
setPoint(point);
*/
/*
this.grade = grade;
this.name = name;
this.point = point;
*/
}
@Override //오타가날수있으니 명시해주는게 좋다(오타나면 그냥 새메소드만들어지는것)
public double getBonus() {
return getPoint()*0.07;
}
}
Controller : PointMgr.java
package kh.java.controller;
import java.util.Scanner;
import kh.java.vo.Gold;
import kh.java.vo.Silver;
import kh.java.vo.Vip;
public class PointMgr {
private Scanner sc;
private Silver[] sMembers;
private int sIndex;
private Gold[] gMembers;
private int gIndex;
private Vip[] vMembers;
private int vIndex;
private char flag; // searchMember2()에서 배열구분을위한 변수
public PointMgr() {
super();
sc = new Scanner(System.in);
sMembers = new Silver[10];
gMembers = new Gold[10];
vMembers = new Vip[10];
sIndex = 0;
gIndex = 0;
vIndex = 0;
flag = 'A';
}
public void main() {
while (true) {
System.out.println("\n-------회원관리프로그램v2-------\n");
System.out.println("1. 회원 정보 등록");
System.out.println("2. 회원 전체 출력");
System.out.println("3. 회원 1명 조회");
System.out.println("4. 회원 정보 수정");
System.out.println("5. 회원 정보 삭제");
System.out.println("0. 프로그램 종료");
System.out.print("선택 > ");
int sel = sc.nextInt();
switch (sel) {
case 1:
insertMember();
break;
case 2:
printAllMember();
break;
case 3:
printOneMember();
break;
case 4:
updateMember();
break;
case 5:
deleteMember();
break;
case 0:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("잘못 입력하셨습니다.");
break;
}
}
}
public void insertMember() {
System.out.println("\n-------회원 정보 등록-------\n");
System.out.print("등록할 회원 등급 입력[silver/gold/vip] : ");
String grade = sc.next();
System.out.print("등록할 회원 이름 입력 : ");
String name = sc.next();
System.out.print("등록할 회원 포인트 입력 : ");
int point = sc.nextInt();
switch (grade) {
case "silver":
Silver s = new Silver(grade, name, point);
sMembers[sIndex] = s;
sIndex++;
break;
case "gold":
gMembers[gIndex] = new Gold(grade, name, point);
gIndex++;
break;
case "vip":
vMembers[vIndex++] = new Vip(grade, name, point); // 후위연산으로 실행후 +1
break;
default:
System.out.println("등급을 잘못 입력하셨습니다.");
return;
}
System.out.println("회원정보 등록 완료!");
}
public void printAllMember() {
System.out.println("\n-------전체 회원 정보 출력-------\n");
System.out.println("등급\t이름\t포인트\t보너스");
System.out.println("---------------------------------");
// sMembers 출력
for (int i = 0; i < sIndex; i++) {
Silver s = sMembers[i];
System.out.println(s.getGrade() + "\t" + s.getName() + "\t" + s.getPoint() + "\t" + s.getBonus());
}
// gMembers 출력
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
String grade = g.getGrade();
String name = g.getName();
int point = g.getPoint();
double bonus = g.getBonus();
System.out.println(grade + "\t" + name + "\t" + point + "\t" + bonus);
}
// vMembers 출력
for (int i = 0; i < vIndex; i++) {
System.out.println(vMembers[i].getGrade() + "\t" + vMembers[i].getName() + "\t" + vMembers[i].getPoint()
+ "\t" + vMembers[i].getBonus());
}
}
public void printOneMember() {
System.out.println("\n-------회원 1명 정보 출력-------\n");
System.out.print("조회 할 회원 이름 입력 : ");
String name = sc.next();
int[] searchIndex = searchMember1(name);
if (searchIndex[0] == 0) {
System.out.println("회원 정보를 조회할 수 없습니다.");
} else {
if (searchIndex[0] == 1) {
// sMembers[]
int i = searchIndex[1];
Silver s = sMembers[i];
System.out.println("등급 : " + s.getGrade());
System.out.println("이름 : " + s.getName());
System.out.println("포인트 : " + s.getPoint());
System.out.println("보너스 : " + s.getBonus());
} else if (searchIndex[0] == 2) {
// gMembers[]
System.out.println("등급 : " + gMembers[searchIndex[1]].getGrade());
System.out.println("이름 : " + gMembers[searchIndex[1]].getName());
System.out.println("포인트 : " + gMembers[searchIndex[1]].getPoint());
System.out.println("보너스 : " + gMembers[searchIndex[1]].getBonus());
} else if (searchIndex[0] == 3) {
// vMembers[]
Vip v = vMembers[searchIndex[1]];
System.out.println("등급 : " + v.getGrade());
System.out.println("이름 : " + v.getName());
System.out.println("포인트 : " + v.getPoint());
System.out.println("보너스 : " + v.getBonus());
}
}
}
public void updateMember() {
System.out.println("\n-------회원 정보 수정-------\n");
System.out.print("수정할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchMember3(name);
if (searchIndex == -1) {
System.out.println("회원 정보를 조회할 수 없습니다.");
} else {
System.out.print("변경할 등급 입력[silver/gold/vip] : ");
String updateGrade = sc.next();
System.out.print("변경할 이름 입력 : ");
String updateName = sc.next();
System.out.print("변경할 포인트 입력 : ");
int updatePoint = sc.nextInt();
// 0~9 : s / 10~19 : g / 100~109 : v
if (searchIndex / 100 == 1) {
// vMembers
searchIndex -= 100; // 100더해서 return했으므로 빼줘야함
for(int i=searchIndex; i<vIndex-1; i++) {
vMembers[i] = vMembers[i+1];
}
vMembers[--vIndex] = null;
} else if (searchIndex / 10 == 1) {
// gMembers
searchIndex -= 10;
for(int i=searchIndex; i<gIndex-1; i++) {
gMembers[i] = gMembers[i+1];
}
gMembers[--gIndex] = null;
} else {
// sMembers
for(int i=searchIndex; i<sIndex-1; i++) {
sMembers[i] = sMembers[i+1];
}
sMembers[-sIndex] = null;
}
switch(updateGrade) {
case "silver":
sMembers[sIndex] = new Silver(updateGrade, updateName, updatePoint);
sIndex++;
break;
case "gold":
gMembers[gIndex++] = new Gold(updateGrade, updateName, updatePoint);
break;
case "vip":
vMembers[vIndex++] = new Vip(updateGrade, updateName, updatePoint);
break;
}
}
}
public void noUdateMember() {
System.out.println("\n-------회원 정보 수정-------\n");
System.out.print("수정할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchMember3(name);
if (searchIndex == -1) {
System.out.println("회원 정보를 조회할 수 없습니다.");
} else {
System.out.print("변경할 등급 입력[silver/gold/vip] : ");
String updateGrade = sc.next();
System.out.print("변경할 이름 입력 : ");
String updateName = sc.next();
System.out.print("변경할 포인트 입력 : ");
int updatePoint = sc.nextInt();
// 0~9 : s / 10~19 : g / 100~109 : v
// if(0<=searchIndex && searchIndex <=9) {}이런식으로사용도ok
if (searchIndex / 100 == 1) {
// vMembers
searchIndex -= 100; // 100더해서 return했으므로 빼줘야함
Vip v = vMembers[searchIndex];
v.setGrade(updateGrade);
//setter를 사용해서는 수정x - 객체가 아닌 글씨만 바뀐다
//vip -> gold라고 바뀌엇지만 여전히 vip객체인것(보너스문제)
//등급이바뀌면 객체도 바뀌도록 해줘야함 - 기존입력을 삭제하고 새로등급을 작성해줘야함
v.setName(updateName);
v.setPoint(updatePoint);
} else if (searchIndex / 10 == 1) {
// gMembers
searchIndex -= 10;
Gold g = gMembers[searchIndex];
g.setGrade(updateGrade);
g.setName(updateName);
g.setPoint(updatePoint);
} else {
// sMembers
sMembers[searchIndex].setGrade(updateGrade);
sMembers[searchIndex].setName(updateName);
sMembers[searchIndex].setPoint(updatePoint);
}
}
}
public void deleteMember() {
System.out.println("\n-------회원 정보 삭제-------\n");
System.out.print("삭제할 회원 이름 입력 : ");
String name = sc.next();
int searchIndex = searchMember2(name);
if (searchIndex == -1) {
System.out.println("회원정보를 조회할 수 없습니다.");
} else {
if (flag == 's') {
for (int i = searchIndex; i < sIndex - 1; i++) {
sMembers[i] = sMembers[i + 1];
}
sIndex--;
sMembers[sIndex] = null;
} else if (flag == 'g') {
for (int i = searchIndex; i < gIndex - 1; i++) {
gMembers[i] = gMembers[i + 1];
}
gIndex--;
gMembers[gIndex] = null;
} else if (flag == 'v') {
for (int i = searchIndex; i < vIndex - 1; i++) {
vMembers[i] = vMembers[i + 1];
}
vMembers[--vIndex] = null;// 전위연산으로 빼고작업
}
System.out.println("회원삭제 완료");
}
}
// searchMember 방법1.배열을 사용(회원검색)
// searchMember 방법1.배열을 되돌려주기
public int[] searchMember1(String searchName) {
// return i만 받으면 문제발생 ) index숫자는 받았는데 어느배열의 index인지 알 수 없음
// 구분할 값이 두개는 있어야함 - 어떤배열인지 / 그배열의 몇번째인지
// 메소드에서 return은 하나밖에 못씀
// 방법1. 이 용도의 vo만들기
// 방법2. 배열을 되돌려주기
int[] arr = new int[2];
for (int i = 0; i < sIndex; i++) {
Silver s = sMembers[i];
String name = s.getName();
if (name.equals(searchName)) {
arr[0] = 1;
arr[1] = i;
return arr;
}
}
for (int i = 0; i < gIndex; i++) {
Gold g = gMembers[i];
if (g.getName().equals(searchName)) {
arr[0] = 2;
arr[1] = i;
return arr;
}
}
for (int i = 0; i < vIndex; i++) {
if (vMembers[i].getName().equals(searchName)) {
arr[0] = 3;
arr[1] = i;
return arr;
}
}
return arr;
}
// searchMember 방법2.구분을위한 변수(char flag)를 이용(회원삭제)
public int searchMember2(String searchName) {
for (int i = 0; i < sIndex; i++) {
Silver s = sMembers[i];
if (s.getName().equals(searchName)) {
flag = 's';
return i;
}
}
for (int i = 0; i < gIndex; i++) {
if (gMembers[i].getName().equals(searchName)) {
flag = 'g';
return i;
}
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
String name = v.getName();
if (name.equals(searchName)) {
flag = 'v';
return i;
}
}
return -1;
}
// searchMember 방법3.return에 특정값을 더해서 인덱스번호를 겹치지않게 사용하여 구분(회원수정)
// 대신 위메소드에서 사용할 때 더한값을 빼줘야한다!
// 배열크기가 10이기때문에 +10 +100사용할수있음 길이가 다르면 바꿔줘야한다.
public int searchMember3(String searchName) {
for (int i = 0; i < sIndex; i++) {
Silver s = sMembers[i];
if (s.getName().equals(searchName)) {
return i;// 0~9
}
}
for (int i = 0; i < gIndex; i++) {
if (gMembers[i].getName().equals(searchName)) {
return i + 10;// 10~19
}
}
for (int i = 0; i < vIndex; i++) {
Vip v = vMembers[i];
String name = v.getName();
if (name.equals(searchName)) {
return i + 100;// 100~109
}
}
return -1;
}
}
'국비수업 > JAVA' 카테고리의 다른 글
14일차 : Object / API (0) | 2022.12.15 |
---|---|
13일차 : 종속 / 다형성 / 추상클래스와 인터페이스 (0) | 2022.12.14 |
11일차 : 객체지향프로그래밍-학생관리프로그램 (0) | 2022.12.12 |
10일차 : 객체지향프로그래밍 (0) | 2022.12.12 |
9일차 : 메소드(Method) (0) | 2022.12.08 |