所以我想把一个新项目推到数组的末尾(数字1-9)。一位朋友告诉我,我写的代码是正确的,但是当我在eclipse上运行时,没有任何反应。我需要做什么?我应该只在主块下面打印数组吗?谢谢。
public static void main(String[] args) {
long[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
}
public static long[] push(long[] array, long item) {
// Add one item to an array
long cellsToAdd = 1;
long[] array2 = new long[array.length + 1];
// copy each item in array2 -> array3
for (int i = 0; i < array.length; i++) {
array[i] = array2[i];
}
array2[array2.length - 1] = item;
System.out.println("Array: ");
// Print the array to the console
for (long p : array2) {
System.out.println(p);
}
return array2;
}
答案 0 :(得分:3)
您可以使用System.arraycopy
创建新阵列并增加其大小。
由于您使用的是基元long
类型,因此您需要为每个基元(int
,float
,double
等)复制粘贴此逻辑,如果你想支持这些类型。
public static void main(String[] args) {
long[] digs = { 0, 1, 2, 3, 5 }
long[] digs2 = push(digs, 6);
long[] digs3 = pushAll(digs2, new long[] { 7, 8, 9 });
System.out.println(Arrays.toString(digs)); // [0, 1, 2, 3, 5]
System.out.println(Arrays.toString(digs2)); // [0, 1, 2, 3, 5, 6]
System.out.println(Arrays.toString(digs3)); // [0, 1, 2, 3, 5, 6, 7, 8, 9]
// Generic Example
Long[] genArr = push(new Long[] { 0L, 1L }, new Long(3L), Long.class);
// or Long[] genArr = push(new Long[] { 0L, 1L }, new Long(3L));
System.out.println(Arrays.toString(genArr)); // [0, 1, 3]
}
public static long[] push(long[] a, long b) {
long[] result = new long[a.length + 1];
System.arraycopy(a, 0, result, 0, a.length);
result[a.length] = b;
return result;
}
public static long[] pushAll(long[] a, long[] b) {
long[] result = new long[a.length + b.length];
System.arraycopy(a, 0, result, 0, a.length);
System.arraycopy(b, 0, result, a.length, b.length);
return result;
}
public static <E> E[] push(E[] a, E b, Class<E> classType) {
@SuppressWarnings("unchecked")
E[] result = (E[]) Array.newInstance(classType, a.length + 1);
System.arraycopy(a, 0, result, 0, a.length);
result[a.length] = b;
return result;
}
// Convenience, so that you don't have to pass in the class.
public static Long[] push(Long[] a, Long b) {
return push(a, b, Long.class);
}
答案 1 :(得分:1)
除了实际上像其他人提到的那样调用函数之外,你的for循环copys从array2到array,而它应该是相反的方式
答案 2 :(得分:0)
您定义了一个方法,但没有调用它。
public static void main(String[] args) {
long[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
array = MyClassName.push( array , 10L );
}
如果你只是练习学习,那就足够了。但是要知道,Java Collections框架中已经为您提供了这种功能。