회원 정보를 저장하는 클래스
package memberclass;
public class Member {
private String name;
private int height;
private int weight;
private String nation;
public Member(String name,int height, int weight,String nation){
this.name = name;
this.height = height;
this.weight = weight;
this.nation = nation;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getHeight(){
return height;
}
public void setHeight(int height){
this.height = height;
}
public int getWeight(){
return weight;
}
public void setWeight(int weight){
this.weight = weight;
}
public String getNation(){
return nation;
}
public void setNation(String nation){
this.nation = nation;
}
}
멤버 이름으로 배열 개체에서 멤버를 검색하기 위한 실제 함수를 정의하는 클래스입니다.
package memberclass;
public class SearchService {
Member () members = new Member(5);
public SearchService(){
members(0) = new Member("오정원", 167, 77, "대한민국");
members(1) = new Member("James", 187, 67, "USA");
members(2) = new Member("가루상", 166, 57, "일본");
members(3) = new Member("홍금보", 177, 80, "중국");
members(4) = new Member("인도인", 199, 77, "인도");
}
boolean searchMember(String name){
boolean searchResult=false;
for(int i = 0; i<members.length; i++){
if(members(i).getName().equals(name)){
printInfo(members(i));
searchResult = true;
}
}
return searchResult;
}
private void printInfo(Member member){
System.out.println(member.getName()+"으로 찾은 결과");
System.out.println("이름 : " + member.getName());
System.out.println("신장 : " + member.getHeight());
System.out.println("몸무게 : " + member.getWeight());
System.out.println("국가 : " + member.getNation());
}
}
코드 분석
구성원() 구성원 = 새 구성원(5); | Members라는 이름으로 Member 타입의 객체를 저장하기 위해 Array 객체를 생성하는 부분입니다. |
공개 검색 서비스(){ member(0) = new member(“오정원”, 167, 77, “한국”); member(1) = new member(“James”, 187, 67, “USA”); member(2) = new Member(“파우더”, 166, 57, “일본”); 멤버(3) = 신입 멤버(“홍금보”, 177, 80, “중국”); members(4) = new member(“인도인”, 199, 77, “인도인”); } |
SearchService 클래스의 생성자에서 구성원 배열 개체로부터 5개의 구성원 개체가 만들어지고 배열의 요소로 저장되었습니다. 따라서 SearchService 객체를 생성하면 구성원 정보를 저장하는 구성원 배열 객체가 생성됩니다. |
부울 searchMember(문자열 이름){ 부울 검색 결과 = 거짓; for(int i = 0; i if(구성원(i).getName().equals(이름)){ printInfo(구성원(i)); 검색 결과 = 참; } } 검색 결과 반환; } |
원하는 멤버를 찾는 searchMember() 메서드입니다. 멤버의 이름을 매개 변수 변수 값으로 가져오고 배열에서 매개 변수 변수 값과 동일한 이름을 가진 멤버 개체를 찾습니다. 그런 다음 찾은 구성원의 정보를 반환하고 searchResult 값을 true로 변경합니다. 정보가 없으면 false를 반환하고 종료합니다. -printInfo(): SearchService 클래스에 정의된 멤버 정보를 출력하는 메서드 |
부울 검색 결과 = 거짓; | 주어진 이름을 가진 항목이 있는지 확인하고 부울 값으로 저장하는 지역 변수입니다. 찾으면 true로 저장하고 찾지 못하면 기본값을 false로 반환합니다. |
for(int i = 0; i if(구성원(i).getName().equals(이름)){ printInfo(구성원(i)); 검색 결과 = 참; } } |
멤버 객체를 저장하는 멤버 배열이 길수록 for 문이 반복되는 영역이다. |
if(구성원(i).getName().equals(이름)) | 인덱스 i의 값에 해당하는 멤버 객체의 이름과 인자 값으로 전달된 이름 변수의 값이 같은지 비교하는 부분으로 이름이 같으면 찾을 멤버로 판단한다. -equals(): 문자열의 값이 같은지 비교하는 메서드. |
printInfo(구성원(i)); | 해당 이름의 멤버가 발견되면 printInfo(members(i))가 호출되어 인덱스 멤버 정보를 출력합니다. |
검색 결과 = 참; | if 조건이 충족되면 적절한 이름을 가진 항목이 발견되므로 searchResult 변수의 값이 true로 설정됩니다. |
검색 결과 반환; | 마지막으로 해당 멤버의 발견 여부를 boolean 변수의 검색 결과 값으로 반환하였다. |
개인 무효 printInfo(회원 회원){ 체계.에서.println(member.getName()에 의해 발견된 결과+””); 체계.에서.println(“이름: ” + member.getName()); 체계.에서.println(“높이: ” + member.getHeight()); 체계.에서.println(“무게: ” + member.getWeight()); 체계.에서.println(“국가: ” + member.getNation()); } |
멤버 객체의 getXXX 메소드를 호출하여 인자 값으로 전달된 멤버 객체의 정보를 표시하는 부분입니다. |
사용자 입력을 받는 메인 클래스
package memberclass;
import java.util.Scanner;
public class SearchMain {
public static void main(String() args) {
SearchService sv = new SearchService();
Scanner sc = new Scanner(System.in);
do {
System.out.println("검색할 회원 이름을 입력하세요");
System.out.print("이름 입력 : ");
String name = sc.next();
boolean searchResult = sv.searchMember(name);
if (searchResult) break;
System.out.println("해당 회원이 없습니다.
");
}
while (true);
}
}
코드 분석
import java.util.Scanner; | Scanner 클래스를 import 하는 부분으로 java.lang 패키지가 아닌 다른 패키지에서 제공하는 클래스를 사용하고 있다면 import 해야 한다. |
검색 서비스 sv = 새로운 검색 서비스(); | SearchService 클래스에 정의된 인스턴스 메서드를 사용하기 위해 SearchService 객체를 생성하는 부분이다. |
스캐너 sc = 새 스캐너(system.in); | 콘솔을 통해 사용자가 입력한 데이터를 읽을 수 있는 Scanner 객체를 생성하는 부분입니다. |
문자열 이름 = sc.next(); | Scanner를 이용하여 콘솔에 입력된 문자열 데이터를 읽어오는 부분입니다. |
부울 searchResult = sv.searchMember(이름); | 콘솔에서 읽은 사용자 이름을 인수로 전달하여 SearchService 클래스의 searchMember 메서드를 호출합니다. 결과로 반환된 boolean 값을 searchResult 변수에 할당합니다. |
if (searchResult) break; | searchResult 변수의 값이 true이면, 즉 콘솔에서 입력한 멤버 이름을 가진 멤버 객체가 발견되면 do ~ while 문이 break 문으로 이스케이프되면서 프로그램이 종료됩니다. |
체계.에서.println(“관련된 회원 존재하지 않는다.”); | 만약 콘솔에 입력한 멤버 이름과 일치하는 멤버가 없다면 “해당 멤버가 없습니다”라는 메시지를 출력하고 do-while 문을 다시 반복합니다. |
실행 결과
검색할 구성원 이름을 입력하세요.
이름 입력: 박정원
해당 회원이 없습니다.
검색할 구성원 이름을 입력하세요.
이름 입력: 오정원
오정원님이 찾아주신 결과
이름 : 오정원
신장: 167
무게: 77
국가: 대한민국