Java 将整数添加到现有数组的开头
我得到了一个Java 将整数添加到现有数组的开头,java,arrays,Java,Arrays,我得到了一个int数组,我需要返回一个新数组,在数组的开头添加数字3 因此,如果数组是MyArray[1,2,3],我需要创建一个新数组,上面写着[3,1,2,3] 如果不使用ArrayList,我不确定该如何执行此操作。我只需要使用循环就可以了。试试这样的方法: public int[] insert(int[] src, int value) { int[] dest = new int[src.length + 1]; dest[0] = value; for (i
int
数组,我需要返回一个新数组,在数组的开头添加数字3
因此,如果数组是MyArray[1,2,3]
,我需要创建一个新数组,上面写着[3,1,2,3]
如果不使用ArrayList,我不确定该如何执行此操作。我只需要使用循环就可以了。试试这样的方法:
public int[] insert(int[] src, int value)
{
int[] dest = new int[src.length + 1];
dest[0] = value;
for (int i=0; i<src.length; i++)
{
dest[i+1] = src[i];
}
return dest;
}
int[] newArray = insert(MyArray, 3);
这是基本思想。您需要将其放入一个类中,添加错误检查(例如,如果
src
为null
),等等。这里不需要显式循环,因为您可以假定使用。首先,决定如何处理数组的null
输入(我希望返回一个新的单元素数组)。否则,请创建一个新阵列,其中包含多个元素的空间。设置第一个值,然后以偏移量1复制所有内容。最后,返回新数组。像
public static int[] insertValue(int[] src, int value) {
if (src == null) {
return new int[] { value };
}
int[] dest = new int[src.length + 1];
dest[0] = value;
System.arraycopy(src, 0, dest, 1, src.length);
return dest;
}
您可以使用
System.arrayCopy()
Java数组的长度是固定的,因此我们通常使用ArrayList来处理这类事情。是否允许您创建一个新数组?如果必须,请使用两个数组,一个数组的大小为+1,另一个数组的大小为+1,并根据您的问题陈述添加元素。是。我应该创建一个新数组,从现有数组复制元素。因此,在文章中,现有的阵列将是MyArray,我需要制作一个新的阵列,复制MyArray的阵列,但前面只有一个3。嘿,这太棒了,谢谢!所以唯一的问题是,我只能做我能做的事情,因为我在一个实践网站上做这件事(我在eclipse中试用过,效果非常好)。我应该将其添加到的方法以这个
int[]prepend5(int[]nums)
开头,我无法更改它,因为这是一个实践问题。有没有办法将3添加到乞讨器中?一般的想法应该可以传送到你的练习网站上。请随意将此标记为正确答案:)是的,它可以工作。我需要在方法int[]prepend5(int[]nums)
中使用此代码,而不使用insert,它只在数组的开头返回0。获取insert()
的主体,并在prepend5()
中使用它。不要使用值
,只需使用硬编码的3
。使用nums
而不是src
@dave I'm dumb。我没有意识到我可以硬编码3而不是值。现在这很有道理。谢谢。首先,决定如何处理数组的空输入(我希望返回一个新的单元素数组)。我宁愿让它抛出一个NPE。在我看来,这是最自然、最合乎逻辑的做法。@shmosel然后你就不能简单地使用if
(不同的人有不同的笔划)。你可以使用arrayCopy()
,但OP必须使用循环。
public int[] insert(int[] src, int value) {
int[] dest = new int[src.length + 1];
dest[0] = value;
System.arraycopy(src, 0, dest, 1, src.length);
return dest;
}