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