Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将整数添加到现有数组的开头_Java_Arrays - Fatal编程技术网

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;
    }