需要帮助解决Java数组问题吗

需要帮助解决Java数组问题吗,java,arrays,integer,repeat,Java,Arrays,Integer,Repeat,我需要一点帮助。我正在尝试组合一个小型Java程序,该程序创建并返回一个数组,其中包含a的所有元素,每个元素都是重复的。然而,每次我试图执行我的代码时,我都会得到一个“越界”异常。请告诉我哪里出了问题。谢谢以下是我到目前为止的情况: public class integerStutter { public static int[] stutter(int [] a){ int[] j = new int[a.length*2]; for(int i=0;

我需要一点帮助。我正在尝试组合一个小型Java程序,该程序创建并返回一个数组,其中包含a的所有元素,每个元素都是重复的。然而,每次我试图执行我的代码时,我都会得到一个“越界”异常。请告诉我哪里出了问题。谢谢以下是我到目前为止的情况:

public class integerStutter
{
    public static int[] stutter(int [] a){
       int[] j = new int[a.length*2];

        for(int i=0; i < j.length; i++){

            j[i] = a[i];
            j[i+1] = a[i];
            i++;
    }
    return j;
   }
}
公共类整数
{
公共静态int[]口吃(int[]a){
int[]j=新的int[a.长度*2];
对于(int i=0;i
新旧阵列的大小不同。您正试图使用新数组(大小为两倍)的有效索引访问旧数组中的元素,这导致了异常

相反,请尝试:

// iterate over the old array.
for(int i=0; i < a.length; i++){

        // index into new array.
        int x = 2 * i;

        // copy old array ele at index i into new array at index x and x+1.
        j[x] = j[x+1] = a[i];        
} 
//迭代旧数组。
for(int i=0;i
因此,数组
j
a
的大小不相等。但是循环一直运行到
j.length
-

for(int i=0; i < j.length; i++){

     j[i] = a[i];    // array out of bounds once i passes a.length
     j[i+1] = a[i];  // array out of bounds once i passes a.length
     i++;  // Why again incrementing here ?
}
for(int i=0;i
你可以这样做

for(int i=0,k=0;i<a.length;i++,k=k+2)
{
     j[k]=j[k+1]=a[i];

}

for(inti=0,k=0;i如果我正确理解了问题,这将满足您的需要。这也是一个很好的干净解决方案

public static int[] stutter(int[] a) {
    int[] j = new int[a.length * 2];

    for (int i = 0; i < a.length; i++) {
        j[i * 2] = a[i];
        j[i * 2 + 1] = a[i];
    }

    return j;
}
publicstaticint[]stutter(int[]a){
int[]j=新的int[a.长度*2];
for(int i=0;i
公共类整数
{
公共静态int[]口吃(int[]a){
int[]j=新的int[a.长度*2];
对于(int i=0;i
+1天哪,它解决了问题。请看我的答案。它也是一个替代方案。欢迎使用堆栈溢出,如果您提供一些关于如何解决OP问题的解释,可能会有所帮助。
public static int[] stutter(int[] a) {
    int[] j = new int[a.length * 2];

    for (int i = 0; i < a.length; i++) {
        j[i * 2] = a[i];
        j[i * 2 + 1] = a[i];
    }

    return j;
}
public class integerStutter
{
public static int[] stutter(int [] a){
    int[] j = new int[a.length*2];

    for(int i=0; i < j.length; i++){

        j[i] = a[i];
        j[i+1] = a[i];
        i++;
    }
    return j;
}
}