2013-11-28 4 views
0

배열에서 항목을 삭제 한 다음 모든 요소를 ​​한 색인 아래로 이동시켜 배열 끝에 빈 공간이 남게하는 코드가 있습니다. 문제는 배열의 마지막 항목이 삭제 된 색인으로 복제된다는 것입니다.배열 삭제 - 마지막 항목 복제

[entryOne, entryTwo, entryThree, entryFour, entryFive, entrySix, entrySeven, entryEight, entryNine, entryTen]

그때 인덱스 (5)을 삭제하고 배열을 인쇄하려면 코드를 실행

, 이것은 표시되는 내용입니다 :

[entryOne, entryTwo, entryThree, entryFour, entryFive, entrySeven, entryEight, entryNine, entryTen, entryTen]

모든 레코드가 입력 배열입니다

최종 색인을 비우려면 어떻게해야합니까?

기록 코드를 추가

static void addStudent() { 
    if (nameArrayCount < 10) { 
     System.out.println("Enter the student's name in the following format - surname, forename: "); 
     studentName = input.next(); 
     studentNamesArray[nameArrayCount] = studentName; 
     nameArrayCount = nameArrayCount + 1; 
    } 
    else if (nameArrayCount == 10) { 
     System.out.println("******Array is full, please delete a student before adding another.*****"); 
    } 
    if (markArrayCount < 10){ 
    System.out.println("Enter the first mark: "); 
      markOne = input.nextInt(); 
      System.out.println("Enter the second mark: "); 
      markTwo = input.nextInt(); 
      System.out.println("Enter the third mark: "); 
      markThree = input.nextInt(); 
      studentMarksArray[markArrayCount][0] = markOne; 
      studentMarksArray[markArrayCount][1] = markTwo; 
      studentMarksArray[markArrayCount][2] = markThree; 
      markArrayCount = markArrayCount + 1; 
    } 
    } 

기록 코드를 삭제

static void deleteStudent() { 
    System.out.println("Which student would you like to delete?"); 
    for(int i=0;i<10;i++) { 
     System.out.println(i + ": " + studentNamesArray[i]); 
    } 
    int studentChoice = input.nextInt(); 
    for(int i = studentChoice+1; i<studentNamesArray.length; i++) { 
     studentNamesArray[i-1] = studentNamesArray[i]; 
    } 
    nameArrayCount = nameArrayCount -1; 
    } 
+1

배열에 객체 또는 문자열이 있다고 가정하고 마지막 것을 null로 설정하십시오. 그러나 배열의 크기를 조정할 수는 없습니다. 대신 목록 사용을 고려 했습니까? – Taylor

답변

5

수동 null로 설정해야합니다.

for(int i = studentChoice+1; i<studentNamesArray.length; i++) { 
     studentNamesArray[i-1] = studentNamesArray[i]; 
} 

studentNamesArray[studentNamesArray.length - 1] = null; 

이렇게하려는 경우 ArrayList을 대신 사용할 수 있습니다. 값을 제거/추가하는 것이 훨씬 좋습니다. 또한 필요한 경우 배열 형식으로 반환 할 수있는 toArray() 메서드가 있습니다 (이 코드 샘플에서는 값 비싼 작업이 될 수있는 많은 학생 항목을 사용할 것으로 기대하지 않습니다).

+0

어떤 경우 든 목록을 사용해서는 안되며, 배열을 더 작은 배열로 복사하기 위해'System.arraycopy'를 사용할 수 있습니다. –

+0

감사합니다. 시간 제한이 만료되면 동의합니다. – Colin747