【问题标题】:Inserting element into array using c#使用c#将元素插入数组
【发布时间】:2017-12-13 07:14:51
【问题描述】:
        int[] arr = {4,3,6,7,9,12};

        int n = arr.Length;
        n = n + 1;

        for (int i =n;i>2;i--) { 
        arr[i-1] = arr[i-2];

        }

        arr[0] = 4;

以上代码返回

indexOutOfRange 异常。

【问题讨论】:

  • 你想达到什么目的?你为什么不改用List
  • arr.Length 为 6;你将它分配给 n,n 现在是 6,n 现在是 n + 1,n 现在是 7,在你的循环中 i = n 是 7,arr[i-1] 是 arr[6] 并且 arr[6] 不是存在,这就是为什么你得到 indexOutOfRange 异常,如果你想编辑,你应该使用列表
  • 在第一个索引@S.Akbari 上插入一个元素
  • 我可以使用列表,但我需要找到如何在数组中插入元素
  • @vnuthaya 你不能使用数组,你需要使用List<int>

标签: c# arrays insertion indexoutofrangeexception


【解决方案1】:
int n = arr.Length //n=6
n=n+1 //n=7
for(int i=n;i>2;i--){ //i=7
  arr[i-1] //arr[6]

虽然最后一个元素显然是 arr[5]。 在 C# 中,数组的长度是恒定的,您无法更改它们,唯一的方法是创建一个新数组,或者更好的解决方案是使用 List

【讨论】:

  • 是否可以使用 C 或 Java
【解决方案2】:

当然会因为这些

n = n + 1; // n = 7
for (int i =n;i>2;i--) {  //Assining 7 to i  
arr[i-1] = arr[i-2]; // trying to access arr[6] which is not valid

【讨论】:

    【解决方案3】:

    您的数组是从 0 开始的 Length 6。

    for 循环中,i 变为 7,arr[7-1] = arr[6] 超出范围,最大值为 arr[5],即:

    arr[0]
    arr[1]
    arr[2]
    arr[3]
    arr[4]
    arr[5]
    

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 2019-03-08
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 2018-02-04
      • 2013-10-24
      相关资源
      最近更新 更多