2017-06-06 6 views
-2

配列に同じインデックスの乱数を挿入しようとしていますが、何かが機能しません。それは "シンボルを見つけることができません"と言います。このエラーは、挿入およびスプライスJavaの挿入とスプライスエラー

コードと同じです:あなたはinsertsplice方法でコピー

Scanner reader = new Scanner(System.in); 
    System.out.println("Quina llargada tindrà la taula? "); 
    int n = reader.nextInt(); //n=llargada taula 
    int[] taula = new int[n]; 
    int ultims = n-21; 


    int fi = 100*n; 
    Random rand = new Random(); 
    //int al = rand.nextInt(fi) + 0; 

    for (int i = 0; i < taula.length; i++) 
     taula[i] = rand.nextInt(fi); 

Random randGromulls = new Random(); 
    for (int g = 0; g < 10; g++) { 
     g++; 
     int k = randGromulls.nextInt(10); 
     int igual = k; 
     taula.Insert(k, igual); 
     //taula.splice(k, 0, igual); this does not work either 

    } 
+0

Javaに配列用のスプライスまたは挿入がありません。また、 'Insert'? Javaの命名規則には従いません。 –

+0

どのシンボルが見つかりませんか?あなたはエラーをグーグルで気にしましたか?あなたは私が存在しない方法を使用しています。解決策:存在しないメソッドは使用しないでください。 – tnw

+1

実際にタウラは何ですか? –

答えて

0

コードは、JavascriptのためのJavaませんでした。 Java配列はサイズを変更できません。代わりにList<Integer>を使用します。

あなたが本当に配列が必要な場合は、次のインデックスに配列データをシフトすることによって挿入をシミュレートすることができます。たとえば

System.arraycopy(array, i, array, i + 1, array.length - i - 1); 
array[i] = value; 

、あなたはインデックス2の値5を挿入し、それがこのことを行います。

|0|1|2|3|4|0|0|0| 
     \ \ \ \ \ x 
     \ \ \ \ \ 
|0|1|2|2|3|4|0|0| System.arraycopy (shift by 1) 
     v 
|0|1|5|2|3|4|0|0| array[2] = 5 

Java配列はサイズを変更できないため、配列の最後の要素は削除されます。挿入された要素を保持するのに十分な余裕を持って配列を作成する必要があります。

代わりに、あなたはメモリのオーバーヘッドが心配されていない場合、あなたはそれぞれの挿入のための新しい配列を作成することができますが:

int[] array2 = new int[array.length + 1]; 
System.arraycopy(array, 0, array2, 0, i); 
System.arraycopy(array, i, array2, i + 1, array.length - i); 
array2[i] = value; 
array = array2; // all references must be updated to the new array! 

これはあなたに大きなサイズの配列が、元の配列オブジェクトのウォンを与えるだろう変更されることはありません。

関連する問題