2016-11-05 96 views
0

請參閱下面的代碼。使用for語句從數組java中刪除元素

這個任務是讓代碼替換用戶插入的元素,並且僅替換for-statement可以被使用(這是任務要求)。其餘的元素將被保存。例如。當輸入爲「1」時,預計會出現以下輸出:「0 2 3 4」

請幫助修改後面的語句後面的行 「System.out.println(」要刪除的以下元素「+ removedElement );」。

如果可能的話,請在兩個選項中提示「<」和「>」符號可以使用。

import java.util.Scanner; 
public class MainClass { 

public static void main(String[] args) { 


    int baseArray [] = {0, 1, 2, 3, 4}; 

    System.out.println("Existing array:"); 

    for(int i = 0; i < baseArray.length; i++){ 
     System.out.println(baseArray[i]); 
    } 

    System.out.println("Please indicate number of element to be deleted"); 

    Scanner scr = new Scanner (System.in); 

    int removedElement = scr.nextInt(); 

    System.out.println("The following element to de deleted "+removedElement); 

    for (int i = baseArray.length; i>removedElement; i--){ 
     **baseArray[i]=baseArray[i];** 

    } 

    scr.close(); 

    for(int i = 0; i < baseArray.length-1; i++){ 
     System.out.println(baseArray[i]); 
    } 

} 

} 
+0

數組具有固定大小。你不能只是從它上面「刪除」一個元素 –

+1

我建議你離開計算機,並找出如何手動完成這個操作。將該陣列描繪成一排椅子,坐在其中的學生。你將如何「排除」一行中的學生,並在維持學生的秩序的同時填補現在空着的座位? –

回答

1

看來,通過「刪除」的元素, 要通過一個位置移動的所有元素後,向左覆蓋元素與刪除。 要做到這一點,從位置開始的最後位置之前刪除, 迭代,直到一個, 並從下一個位置複製值:

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

根據記錄,此操作可能沒有一個for循環,更快,使用System.arraycopy

System.arraycopy(baseArray, removedElement + 1, baseArray, removedElement, baseArray.length - removedElement - 1);