2011-12-02 63 views
0

所以基本上,我的问题是我必须使数组= n的索引5,所有数字向右推动一个索引。 public void addThisNumberToIndex5(int number) { //将数字添加到索引5处的数字数组中 //所有现有数字都应该右移。数组:向索引5添加数字并向右推

 for (int i = 5; i < numbers.length+1; i++) 
     { 
      number[i] = number[i+1]; 
     } 
     numbers[5] = number; 
    } 

我不断收到错误:“数组需要,但int找到”,但我不知道如何解决它。

+0

代码中的“数字”是什么。 – RanRag

+0

请先编译它,那里的代码可能不会。另外,粘贴整个代码。数字是如何声明和初始化的?这可能是你的问题所在。 – Bombe

+0

@Bombe:我认为“编译”是OP的问题。 =) – Jens

回答

2

您在第二行有一个错字。它应该读取“数字”而不是“数字”。

另外,注意不要超出数组边界!也许你需要创建一个可以存储附加值的新数组?

+0

+1我喜欢快乐的结局。 –

4

看这句话:

number[i] = number[i+1]; 

现在想想你的两个变量:

  • number的类型是int
  • numbers的类型是int[]

现在想关于什么y你可能想改变这条线。

编译器告诉你你需要的所有信息 - 你写的代码看起来像它的试图访问数组,但你要做到这一点int。希望它也会告诉你线路号码。

而不是只是修复错误在这里,值得确保你了解情况,以便下次你可以自己纠正它。

0

你会得到arrayIndexOutOfBounds异常,因为在最后一次迭代中,你试图获得不存在的numbers[numbers.length+1]。 而你有一个错误。你错过了''信件。
number **s**[i] = number **s**[i+1];
您应该创建一个“数字”阵+ 1的长度的新数组我觉得没有必要解释之后,你应该做的事))

1

你也可以使用一个ArrayList。这是List接口的可调整大小的实现。你可以这样做:

myArrayList.add(5, number); 

第一个参数是你想添加新项目的索引,第二个参数是你的号码。如果你在索引n处插入一个元素,索引之后的所有其他元素“向右移动”。请参阅add方法。