728x90
보기싫은 책 목록이다.
앞에 10213 이런 숫자들이랑 뒤에 붙은 1이나 2는 쓸모없는 숫자처럼 보인다. 탭 키도 엉망이라 보기 좋지 않다.
하나하나 수정하기는 귀찮으니 프로그램으로 만들어줄 생각이다.
먼저 결과 화면부터 보자. 출판사랑 책이름이 붙어있기는 하지만 아까보다는 보기 좋은 문서같다.
public static void main(String[] args) {
Vector<String> all = new Vector<>();
inputDocument(all);
scan_and_print(all);
}
main함수는 간단하게 만들어줬다. all백터에 문서 전체를 받고 scan_and_print함수로 정리된 문서를 출력할거다.
static boolean isNo(String str) { // 앞에 10215 이거인지 알려주는 함수
if (str.contains("10")) {
try {
int a = Integer.parseInt(str);
if (a / 1000 == 10)
return true;
} catch (NumberFormatException e) {
}
}
return false;
}
문서를 살펴보면 10104같은 번호, 책이름, 출판사, 이상한 숫자 이렇게 구성되어있다.
isNo함수는 현재 읽은 문자열이 10104같은 번호인지 확인해주는 함수이다.
맞다면 true를 반환한다.
(참고) 저렇게 1000으로 나눠주고 트라이캐치 해준 이유는 책 이름에 100이 들어갈 수도 있기 때문임
static void scan_and_print(Vector<String> all) {
Iterator<String> it = all.iterator();
Iterator<String> preIt = all.iterator();
it.next();
int i = 1;
while (it.hasNext()) {
String n = it.next();
String pre = preIt.next();
if (isNo(n)) {
System.out.println();
continue;
}
if (isNo(pre)) {
System.out.print(i + ". ");
i++;
continue;
}
System.out.print(pre + " ");
}
}
preIt와 it 이터레이터로 2번 읽어줬다. 문서 마지막에 1 2같은 이상한 숫자를 빼기 위해서였다.
10104숫자라는 걸 알아내기만 한다면 그 앞은 1 2라는 걸 알 수 있으니 ㅇㅇㅇ 그렇게 해줬다.
it가 10104라면 앤터를 치고 pre가 10104라면 몇 번째 도서인지 출력해준다. 둘 다 아닐 경우 그냥 출력한 후 띄어쓰기도 해준다.
goood
728x90
'프로그래밍 언어 > javastudy' 카테고리의 다른 글
정답 맞추기 게임 (0) | 2021.08.29 |
---|---|
만들다 만 계산기 (0) | 2021.07.21 |
진법변환기 gui (0) | 2021.07.20 |
명품 Java Essential 8단원 실습문제 1~7 (0) | 2021.07.20 |
간단한 스윙 프로그램 만들기/ 명품 자바 에센셜 8 (0) | 2021.07.19 |