2016-11-05 8 views
0

以下のコードを参照してください。for-statementを使用して配列javaから要素を削除

ユーザが挿入した要素を置き換えるコードを作成し、for-statementだけを置き換えることができます(これはタスクの要件です)。残りの要素は保存されます。例えば。入力が "1"の場合、次の出力が必要です。 "0 2 3 4"

"for delete" + 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ループなしに可能である:、最後の位置の前に1、 まで、 反復を削除する位置から開始し、次の位置から値をコピーすることを行うには より速く、System.arraycopyを使用して:

System.arraycopy(baseArray, removedElement + 1, baseArray, removedElement, baseArray.length - removedElement - 1); 
関連する問題