티스토리 뷰
반응형
목표: 마지막 페이지 구하기
JavaConsole 전체 코드
/* NoticeConsole.java */
package com.newlecture.app.console;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;
import com.newlecture.app.entity.Notice;
import com.newlecture.app.service.NoticeService;
public class NoticeConsole {
private NoticeService service;
/* page를 가질 수있는 상태변수 page추가*/
private int page;
/* page내의 개시글 개수 - 계속해서 변하기 때문에 전역변수로 구하는 것은 바람직하지 X*/
//private int count;
public NoticeConsole() {
service = new NoticeService();
page=1;
//count=0;
}
/* 내용 UI*/
public void printNoticeList() throws ClassNotFoundException, SQLException {
List<Notice> list = service.getList(page);
int count = service.getCount(); //현제 대이터베이스의 테이블에 몇개의 개시글이 있는지
int lastPage = count/10; //100 -> 10, 90 -> 9, 93 -> 9
lastPage = count%10 == 0?lastPage:lastPage+1; //나머지가 0이면 그대로, 아니면 +1
System.out.println("──────────────────────────────────────");
System.out.printf("<공지사항> 총 %d 게시글\n", count); //게시글수
System.out.println("──────────────────────────────────────");
for(Notice n : list) {
System.out.printf("%d. %s / %s / %s\n",
n.getId(),
n.getTitle(),
n.getWriterId(),
n.getRegDate());
}
System.out.println("──────────────────────────────────────");
System.out.printf(" %d/%d pages \n", page, lastPage);
}
/* 메뉴 UI*/
public int inputNoticeMenu() {
Scanner scan = new Scanner(System.in);
System.out.printf("1. 상세조회/ 2.이전/ 3.다음/ 4.글쓰기 / 5.종료 >");
String menu_ = scan.nextLine();
int menu = Integer.parseInt(menu_);
return menu;
}
/*이전목록으로 돌아가는 함수 구현*/
public void movePrevList() {
if(page == 1) { //1페이지 일경우 이전페이지없음 조건검사
System.out.println("==================");
System.out.println("[이전 페이지가 없습니다.]");
System.out.println("==================");
return;
}
page--;
}
/*다음목록으로 돌아가는 함수 구현*/
public void moveNextList() throws ClassNotFoundException, SQLException {
/* 전역변수로 쓰는게 아니라 여기서 값을 다시 호출해서 받아와야한다. 그사이에 값이 또 변경될 수도 있다.*/
int count = service.getCount(); //현제 대이터베이스의 테이블에 몇개의 개시글이 있는지
int lastPage = count/10; //100 -> 10, 90 -> 9, 93 -> 9
lastPage = count%10 == 0?lastPage:lastPage+1; //나머지가 0이면 그대로, 아니면 +1
if(page == lastPage) { //현제 페이지가 마지막 페이지인지 조건검사
System.out.println("==================");
System.out.println(" [마지막 페이지입니다.]");
System.out.println("==================");
page = lastPage;
}
else page++;
}
}
NoticeConsole 코드 수정 부분
public class NoticeConsole {
private NoticeService service;
/* page를 가질 수있는 상태변수 page추가*/
private int page;
/* page내의 개시글 개수 - 계속해서 변하기 때문에 전역변수로 구하는 것은 바람직하지 X*/
//private int count;
public NoticeConsole() {
service = new NoticeService();
page=1;
//count=0;
}
/* 내용 UI*/
public void printNoticeList() throws ClassNotFoundException, SQLException {
List<Notice> list = service.getList(page);
int count = service.getCount(); //현제 대이터베이스의 테이블에 몇개의 개시글이 있는지
int lastPage = count/10; //100 -> 10, 90 -> 9, 93 -> 9
lastPage = count%10 == 0?lastPage:lastPage+1; //나머지가 0이면 그대로, 아니면 +1
System.out.println("──────────────────────────────────────");
System.out.printf("<공지사항> 총 %d 게시글\n", count); //게시글수
System.out.println("──────────────────────────────────────");
for(Notice n : list) {
System.out.printf("%d. %s / %s / %s\n",
n.getId(),
n.getTitle(),
n.getWriterId(),
n.getRegDate());
}
System.out.println("──────────────────────────────────────");
System.out.printf(" %d/%d pages \n", page, lastPage);
}
전역변수로 선언했던 count를 없애고 지역변수로 추가
-> 계속해서 변하는 값이기 때문에 전역변수로 사용하면 안됨.
lastPage의 값을 두줄의 알고리즘을 이용해서 구현
/*다음목록으로 돌아가는 함수 구현*/
public void moveNextList() throws ClassNotFoundException, SQLException {
/* 전역변수로 쓰는게 아니라 여기서 값을 다시 호출해서 받아와야한다. 그사이에 값이 또 변경될 수도 있다.*/
int count = service.getCount(); //현제 대이터베이스의 테이블에 몇개의 개시글이 있는지
int lastPage = count/10; //100 -> 10, 90 -> 9, 93 -> 9
lastPage = count%10 == 0?lastPage:lastPage+1; //나머지가 0이면 그대로, 아니면 +1
if(page == lastPage) { //현제 페이지가 마지막 페이지인지 조건검사
System.out.println("==================");
System.out.println(" [마지막 페이지입니다.]");
System.out.println("==================");
page = lastPage;
}
else page++;
}
전역변수가 없고, 계속해서 변하는 값이기 때문에 count 다시 지역변수로 선언하고 lastPage를 구하는 함수 구현
마지막 페이지일 경우 오류 호출 및 페이지 고정, 아니면 다음 페이지로
총 게시글 15개로 -> 전체 2페이지
1페이지 10개 , 2페이지 5개
마지막 페이지에서 다음 페이지 전달시 오류 발생 및 페이지 고정
반응형
'JDBC' 카테고리의 다른 글
검색 메뉴 붙이고 서비스 추가 (0) | 2021.05.09 |
---|---|
이전 / 다음 구현하기, 게시글 갯수 구하기 (0) | 2021.05.08 |
이전 / 다음 구현하기 (0) | 2021.05.07 |
페이징 쿼리 이용하기 (0) | 2021.05.06 |
페이징을 위한 쿼리 만들기 (0) | 2021.05.06 |
댓글
공지사항