Test168 컬렉션 프레임워크 - (3) 벡터(Vector) - 연습문제
벡터 연습
※ 다음 주어진 Menus 클래스를 참고하여 Test168클래스를 완성하여 실행 예의 기능을 가진 프로그램을 구현한다.
class Menus // → 완성
{
public static final int E_ADD = 1; //-- 요소 추가
public static final int E_DISP = 2; //-- 요소 출력
public static final int E_FIND = 3; //-- 요소 검색
public static final int E_DEL = 4; //-- 요소 삭제
public static final int E_CHA = 5; //-- 요소 변경
public static final int E_EXIT = 6; //-- 종료
}
실행 예)
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 1
1번째 요소 입력 : 허수민
1번째 요소 입력 성공~!!!
요소 입력 계속(Y/N)? : y
2번째 요소 입력 : 진영은
2번째 요소 입력 성공~!!!
요소 입력 계속(Y/N)? : N
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 2
[벡터 전체 출력]
허수민
진영은
벡터 전체 출력 완료~!!!
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 3
검색할 요소 입력 : 진영은
[검색 결과 출력]
항목이 존재합니다.
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 3
검색할 요소 입력 : 주재완
[검색 결과 출력]
항목이 존재하지 않습니다.
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 4
삭제할 요소 입력 : 조인경
[삭제 결과 출력]
항목이 존재하지 않아 삭제할 수 없습니다.
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 4
삭제할 요소 입력 : 허수민
[삭제 결과 출력]
허수민 항목이 삭제되었습니다.
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 5
변경할 요소 입력 : 조윤상
[변경 결과 출력]
변경할 대상이 존재하지 않습니다.
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 5
변경할 요소 입력 : 진영은
수정할 내용 입력 : 조영욱
[변경 결과 출력]
변경이 완료되었습니다.
[메뉴 선택]
1. 요소 추가
2. 요소 출력
3. 요소 검색
4. 요소 삭제
5. 요소 변경
6. 종료
>> 메뉴 선택(1~6) : 6
프로그램 종료
계속하려면 아무 키나 누르세요...
import java.util.Vector;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Enumeration;
class Menus // → 완성
{
public static final int E_ADD = 1; //-- 요소 추가
public static final int E_DISP = 2; //-- 요소 출력
public static final int E_FIND = 3; //-- 요소 검색
public static final int E_DEL = 4; //-- 요소 삭제
public static final int E_CHA = 5; //-- 요소 변경
public static final int E_EXIT = 6; //-- 종료
}
public class Test168
{
// 주요 속성 구성 → 완성
private static final Vector<Object> vt;
private static BufferedReader br;
private static Integer sel; //-- 선택값
private static String con; //-- 계속 여부
// static 초기화 블럭
static
{
// Vector 자료구조 생성
vt = new Vector<Object>();
// BufferedReader 클래스 인스턴스 생성
br = new BufferedReader(new InputStreamReader(System.in));
// 사용자 입력값 초기화
sel = 1;
con = "Y";
}
// 메뉴 출력 메소드
public static void menuDisp()
{
// 사용자에게 안내하기 위한 메세지만을 출력하는 기능
// 메뉴를 선택하는 기능의 메소드를 별도로 정의했기 때문에
// 이 과정에서는 사용자의 선택값을 받아오지 않아도 무방함.
System.out.printf("\n\n\t[메뉴 선택]\n");
System.out.printf("\t1.요소 추가\n");
System.out.printf("\t2.요소 출력\n");
System.out.printf("\t3.요소 검색\n");
System.out.printf("\t4.요소 삭제\n");
System.out.printf("\t5.요소 변경\n");
System.out.printf("\t6.종료\n");
System.out.printf("\n\t>> 메뉴 선택(1~6) : ");
}
// 메뉴 선택 메소드
public static void menuSelect() throws IOException
{
// 선택한 메뉴에 따른 기능 분기는
// menuRun() 에서 처리하기 때문에 입력값을
// 받아오는 기능만 정의
sel = Integer.parseInt(br.readLine());
}
// 선택된 메뉴 실행에 따른 기능 호출 메소드
public static void menuRun() throws IOException
{
// Menus 클래스를 활용하여 처리
switch(sel)
{
case Menus.E_ADD : addElement(); break; //ok
case Menus.E_DISP : dispElement(); break; //ok
case Menus.E_FIND : findElement(); break; //ok
case Menus.E_DEL : delElement(); break;
case Menus.E_CHA : chaElement(); break;
case Menus.E_EXIT : exit(); break; //ok
default :
{
System.out.println("\t선택한 메뉴가 존재하지 않습니다.");
menuSelect();
} break;
}
}
// 요소 추가(입력) 메소드
public static void addElement() throws IOException
{
/*
do
{
System.out.printf("\n\t%d 번째 요소 입력 : ", vt.size() + 1);
String element = br.readLine();
boolean b = vt.add(element);
if (b)
{
System.out.printf("\t%d 번째 요소 입력 성공 !!! ", vt.size());
con = br.readLine().toUpperCase();
}
}
while (con.equals("Y"));
*/
do
{
System.out.print("\n\t"+(vt.size()+1) +"번째 요소 입력 : ");
String str = br.readLine();
System.out.printf("\n\t%d 번째 요소 입력 성공 !!! \n", vt.size()+1);
vt.addElement(str);
// 추가 입력 유무 처리
System.out.print("\t요소 입력 계속(Y/N)? : ");
con = br.readLine().toUpperCase();
}
while (con.equals("Y"));
}
// 요소 출력 메소드
public static void dispElement()
{
System.out.printf("\n\t[벡터 전체 출력]\n");
for (Enumeration e = vt.elements(); e.hasMoreElements() ;)
{
System.out.printf("\t%10s \n", e.nextElement());
}
System.out.printf("\t벡터 전체 출력 완료~!!!\n");
/*
System.out.println("\n[벡터 전체 출력]");
for (int i = 0; i < vt.size(); i++)
System.out.println(vt.elementAt(i));
System.out.println("벡터 전체 출력 완료~!!!");
*/
}
// 요소 검색 메소드
public static void findElement() throws IOException
{
System.out.print("\n\t검색할 요소 입력 : ");
String str = br.readLine();
System.out.println("\n\t[검색 결과 출력]");
if (vt.contains(str))
System.out.println("\t항목이 존재합니다.");
else
System.out.println("\t항목이 존재하지 않습니다.");
}
// 요소 삭제 메소드
public static void delElement() throws IOException
{
System.out.print("\n\t삭제할 요소 입력 : ");
String str = br.readLine();
int idx = vt.indexOf(str);
System.out.println("\n\t[삭제 결과 출력]");
if(idx > -1)
{
vt.removeElementAt(idx);
System.out.println("\t" + str + " 항목이 삭제되었습니다.");
}
else
System.out.println("\t항목이 존재하지 않아 삭제할 수 없습니다.");
}
// 요소 수정(변경) 메소드
public static void chaElement() throws IOException
{
System.out.print("\n\t변경할 요소 입력 : ");
String str = br.readLine();
int idx = vt.indexOf(str);
if (idx>-1)
{
System.out.print("\t수정할 내용 입력 : ");
String str2 = br.readLine();
vt.setElementAt(str2,idx);
System.out.println("\n\t[변경 결과 출력]");
System.out.println("\t변경이 완료되었습니다.");
}
else
{
System.out.println("\n\t[변경 결과 출력]");
System.out.println("\t변경할 대상이 존재하지 않습니다.");
}
}
// 프로그램 종료 메소드 → 완성
public static void exit()
{
System.out.println("\n\t프로그램 종료~!!!");
System.exit(-1);
}
// main() 메소드 → 완성
public static void main(String[] args) throws IOException
{
do
{
menuDisp();
menuSelect();
menuRun();
}
while (true);
}
}
실행 결과
// 실행 결과 /* [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 1 1번째 요소 입력 : 허수민 1번째 요소 입력 성공~!!! 요소 입력 계속(Y/N)? : y 2번째 요소 입력 : 진영은 2번째 요소 입력 성공~!!! 요소 입력 계속(Y/N)? : N [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 2 [벡터 전체 출력] 허수민 진영은 벡터 전체 출력 완료~!!! [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 3 검색할 요소 입력 : 진영은 [검색 결과 출력] 항목이 존재합니다. [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 3 검색할 요소 입력 : 주재완 [검색 결과 출력] 항목이 존재하지 않습니다. [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 4 삭제할 요소 입력 : 조인경 [삭제 결과 출력] 항목이 존재하지 않아 삭제할 수 없습니다. [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 4 삭제할 요소 입력 : 허수민 [삭제 결과 출력] 허수민 항목이 삭제되었습니다. [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 5 변경할 요소 입력 : 조윤상 [변경 결과 출력] 변경할 대상이 존재하지 않습니다. [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 5 변경할 요소 입력 : 진영은 수정할 내용 입력 : 조영욱 [변경 결과 출력] 변경이 완료되었습니다. [메뉴 선택] 1. 요소 추가 2. 요소 출력 3. 요소 검색 4. 요소 삭제 5. 요소 변경 6. 종료 >> 메뉴 선택(1~6) : 6 프로그램 종료 계속하려면 아무 키나 누르세요... */
'JAVA > 컬렉션 프레임워크' 카테고리의 다른 글
| Test169 컬렉션 프레임워크 - (4) Enumeration 과 Iterator 인터페이스 (0) | 2020.09.23 |
|---|---|
| Test163 ~ 167 컬렉션 프레임워크 - (3) 벡터(Vector) (0) | 2020.09.23 |
| Test161 ~ 162 컬렉션 프레임워크 - (2) 큐(Queue) (0) | 2020.09.22 |
| Test160 컬렉션 프레임워크 - (1) 스택(Stack) (0) | 2020.09.22 |
| Test159 컬렉션 프레임워크 (개요) (0) | 2020.09.22 |