package iterator_learn; import java.util.*; public class itr_src { public void getBook(ArrayList lst){ Scanner scan = new Scanner(System.in); System.out.println("검색하실 책 이름을 입력하시오"); int src_rst=0; System.out.println("has not found"); int enter_cnt=1; |
package iterator_learn; import java.util.*; public class lib_main { public static void main(String[] args) { ArrayList<String> ar = new ArrayList<String>(); } |
1. 처음에는 배열을 이용해서 책 등록을 하였다. c에서와 같이 a[]의 배열을 이용 하였었다. 소스를 짜다 보니, main에 소스가 한바닥 ㅋㅋ... 그래서 이게 C와 다른점이 무엇인가..라는 생각에 여러 방법을 생각.
2. 그래서 찾아본것이 HashMap,ArrayList,Map.
3. HashMap<String,String>을 이용해서 프로그램을 짰으나... 아직 내가 이해하기엔 너무 어려웠다...
4. 그래서 ArrayList를 이용하여 코딩시도.
5. 저장된 책들의 모든 리스트를 가져오는 방법은 이런 방법을 사용하였다.
ArrayList를 생성-> Itr_src라는 클래스에서 객체 생성
-> Iterator의 hasNext()를 이용해 배열내 다음값의 존재여부탐색(hasNext는 배열내 next값이 있으면 true, 없으면 false를 리턴한다)
-> Next()를 이용해 해당 배열 값을 받아온다(Next()는 다음 배열 값을 가져온다)
-> 배열의 끝까지 while-> hasNext가 false를 리턴하면 while 종료.
주의할점은 홀수행은 책, 짝수행은 주소이기때문에 그 값들을 구분 시켜 줘야 한다.
그래서 enter_cnt라는 변수를 이용해서 이 값이 계속 1과 2로만 존재되게 만들었다.
(홀수행 실행후에는 ++, 짝수행 실행 후에는 --를 해줘서 가능하게 만들었다)
public void getList(ArrayList lst){ Iterator<String> itr = lst.iterator(); int enter_cnt=1; |
5. 배열내 책 등록시에는 이런 방식으로 저장을 하였다.
setBook();
"책1이름" //( lst.add("책이름"))
"책1주소" //( lst.add("책주소"))
"책2이름" //위와동일
"책2주소" //위와동일
....
이렇게 홀수열에는 책 이름을, 짝수열에는 책 주소를 입력하였다.
왜 이렇게 썼는지는 다음 6번에서 설명
public void setBook(ArrayList lst){ Scanner scan= new Scanner(System.in); System.out.println("등록하실 책 이름을 입력하시오"); String book=scan.nextLine(); System.out.println("책의 위치를 입력 해주세요(ex:1층 1열)"); String line=scan.nextLine(); lst.add(book); lst.add(line); } |
6. ArrayList는 함수의 이름대로 Array다. 이놈이 Matrix라면 참 좋을테지만 이놈은 한 열밖에 존재하지 않는다.
그래서 책 정보 따로, 주소 정보를 따로 저장 하기 위해서 홀/짝 행을 나눈 것이다.
7. 한가지의 책 검색은 이런 방식을 사용하여싿.
일단, 책의 제목을 얻어야 한다. 그리고 리턴되는 값은 책의 존재여부 및 책의 주소이다.
이 부분에서는 앞서 공부한 Scanner scan을 이용하였다.
scan으로책의 값을 받은 후 while(hasNext)를 돌린다.
이때 if ( itr.hasNext()==true && bookname.equals(itr.next())) 문장에 걸리면 검색이 된 것이다.
배열내의 무언가 값이 있고, 입력받은 bookname과 검색된 배열값이 동일하면 제목과 주소를 출력해준다.
주소는 책의 다음 행에 위치하기 때문에, 출력값에 한번 더 itr.next()를 해준다.
즉 제목: 홀수행 ,주소 : 짝수행 이 한꺼번에 출력 되는 것이다.
책이 검색되면 src_rst라는 변수가 1로 set된다. 이는 전체 검색 후 '검색실패'와 '검색 성공'을 구분 짓기 위한 변수이다.
public void getBook(ArrayList lst){ Scanner scan = new Scanner(System.in); System.out.println("검색하실 책 이름을 입력하시오"); int src_rst=0; System.out.println("has not found"); |
다음번에는 MATLAB처럼 자유롭게 MATRIX를 조작 하는 함수가 있는지 공부 해 보아야 겠다.
(혹시 아시는 분 계시면 정보좀 주세요 ㅠㅠ)
작동 모습
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기
매뉴 : 1.책등록 2.책검색 3.전체책목록 4.나가기 |
'소프트웨어 > Android/Java/Ndk' 카테고리의 다른 글
이클립스 매서드 오버라이딩을 쉽게!override/Implement methods (0) | 2013.05.11 |
---|---|
안드로이드 프로세스 완전종료방법 (0) | 2013.05.11 |
JAVA] 무명클래스란? (Anonymous Class) (0) | 2012.11.17 |
JAVA] main에서 sub class의 super class의 변수 호출은 불가능한가..? (0) | 2012.10.28 |
Java] super class와 sub class의 overriding (0) | 2012.10.28 |
JAVA] 객채,속성 생성기초_회원관리_나이비교 (0) | 2012.10.12 |
JAVA] 객체,메소드 생성기초_회원관리 (0) | 2012.10.12 |