2020. 10. 20. 19:17ㆍJAVA/Text Board 프로젝트
#주요 포인트
- 단순히 원하는 배열 칸의 내용을 삭제만 하는 것이 아닌 삭제된 빈공간을 다음 칸이 덮어쓰는 개념
- 단순히 배열의 길이가 아닌 생성되어 있는 배열의 길이를 알기 위한 변수 설정이 필요함
#소스 코드
public static void main(String[] args) { new practice().run2(); } }
class practice {
int[] nums = new int[5]; // nums배열의 크기는 5으로 지정되어 있음 // 하지만 배열 내 몇개의 칸에 내용이 들어있는지 알 수 없음 int numsSize = 0; // 배열 내 현재 들어간 내용이 몇개인지 알 수 있는 지표 생성
public void add(int num) { System.out.printf("숫자 %d 추가\n", num); if (numsSize >= nums.length) { // 만약, 새로 생성을 요청하는 시기에 System.out.println("Array is full !!!"); // 배열 내 칸 수가 모두 찼다면 경고문 return; // return으로 더 이상의 진행을 차단 } // num이라는 숫자 입력 시 nums 배열 numsSize칸에 입력값(num)이 들어감 nums[numsSize] = num; numsSize++; // numsSize가 1씩 증가하면서 배열의 다음 칸으로 입력 칸이 지정됨
}
public void run2() {
add(10); add(20); add(30); add(40); add(50); printArrayDump();
remove(1); // 20이란 값을 삭제하기 위해 1번 배열을 선택하는 것 int indexOf20 = getIndexOf(20); // 20의 인덱스가 뭔지 알려주는 변수 removeByValue(30); // 30값의 인덱스를 찾고 지우는 것까지 자동으로 실행하는 메소드 printArrayDump(); remove(1); // add(60); printArrayDump();
}
public void removeByValue(int value) { int index = getIndexOf(value);
if (index != -1) { //index값이 -1이 아닐때만 remove를 실행 remove(index);
} }
public int getIndexOf(int num) { for (int i = num; i < nums.length; i++) { if (num == nums[i]) { // 입력값(num)과 일치하는 nums 배열 안의 i번 nums를 찾겠다 return i; // 만약 입력값이 nums[i]값과 일치하면 그때의 i값을 리턴 } } return -1; // nums.length까지 찾아봐도 일차하는 값이 없으면 -1값을 리턴 } // 리턴값이 -1인 이유: 배열은 0부터 시작하고 끝날때 칸 수가 뭔진 정확히 알 수 없지만 무조건 양수일 것이기 때문
public void remove(int index) { System.out.printf("%d번 배열 삭제\n", index); for (int i = index + 1; i < numsSize; i++) { // 범위를 numsSize(현재까지 생성된 칸 수)까지 설정해주어야 함 // 범위를 nums.length까지로 설정하면 ?????? nums[i - 1] = nums[i]; // 입력값(index) 칸에 있던 내용을 그 다음 칸 배열로 덮어써서 지우는 개념
} numsSize--; }
public void printArrayDump() { // 현재 배열을 상태를 보고 싶을때 System.out.println("== 배열 덤프 시작 =="); for (int i = 0; i < nums.length; i++) { System.out.printf("nums[%d] : %d\n", i, nums[i]); } System.out.println("== 배열 덤프 종료 ==");
} |
#소스 코드 원본
#최종 출력값
'JAVA > Text Board 프로젝트' 카테고리의 다른 글
게시물 삭제 기능 (0) | 2020.10.21 |
---|---|
20.10.21 게시판 만들기(게시물 삭제기능 구현) (0) | 2020.10.21 |
20.10.19 게시판 만들기(처음부터 ~ article 배열로 정리까지 재구현) (0) | 2020.10.19 |
배열함수를 이용해 article 10개 저장 틀 구현 (0) | 2020.10.17 |
20.10.16 게시판 만들기(if문 최소화, article 배열로 정리) (0) | 2020.10.17 |