2017-06-06 29 views
-2

我试图在数组中插入一些具有相同索引的随机数,但有些东西不起作用。它说“找不到符号”。这个错误是插入和剪接在java中插入和拼接错误

代码相同:

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没有拼接或插入数组。另外,“插入”?这不符合Java命名约定。 –

+0

哪个符号找不到?你打扰谷歌搜索错误?你正在使用我认为不存在的方法。解决方案:不要使用不存在的方法。 – tnw

+1

taula究竟是什么? –

回答

0

insertsplice方法复制的代码是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! 

这将给你一个更大尺寸的数组,但原来的数组对象韩元不会改变。