Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Mảng Thêm Phần Tử bị Lỗi:Index was outside the bounds of the array.

  1. #1
    Ngày gia nhập
    11 2007
    Nơi ở
    Lũng Cú
    Bài viết
    65

    Question Mảng Thêm Phần Tử bị Lỗi:Index was outside the bounds of the array.

    Chào các bạn,
    mình đã search lỗi này trên congdongcviet rồi, nhưng vần chưa tìm được cách khác phục.
    Trong ngôn ngữ C thì mình làm thấy ổn, nhưng qua C# thì bị báo lỗi trên.

    Visual C# Code:
    1. int n = int.Parse(txt_n.Text);
    2.             int vitri = int.Parse(txt_vitri.Text);
    3.             int x = int.Parse(txt_x.Text);
    4.             if (vitri >= 0 && vitri <= n)
    5.             {
    6.                 for (int i =n; i > vitri; i--)
    7.                 {
    8.                     [COLOR="Red"]a[i] = a[i - 1];[/COLOR] //bị lỗi tại đây
    9.                 }
    10.                 a[vitri] = x;
    11.                 n++;    
    12.             }
    13.             else
    14.                 MessageBox.Show("Vi tri ko co trong Mang");
    Mong sớm nhận giúp đỡ của các bạn. Mình xin cảm ơn!

  2. #2
    Ngày gia nhập
    12 2008
    Nơi ở
    Hà Nội
    Bài viết
    374

    Mảng a được khai báo cụ thể ra sao bạn ?

    Nếu mảng a có n phần tử thì khi truy cập a[n] sẽ : Index was outside the bounds of the array.
    Vì vậy vòng for của bạn nên :

    Visual C# Code:
    1. for (int i = n - 1; i > vitri; i--)
    2. {
    3.       a[i] = a[i - 1];
    4. }

  3. #3
    Ngày gia nhập
    09 2011
    Nơi ở
    Thái Nguyên
    Bài viết
    53

    Với ngôn ngữ Pascal thì mảng gồm n phần tử thì ta duyệt từ 1-n.
    Còn lại như java,C,C++,C# thì là duyệt từ 0 -> n-1
    vậy nên câu lệnh
    Code:
      if (vitri >= 0 && vitri <= n)
                {
                    for (int i =n; i > vitri; i--)
                    {
                        a[i] = a[i - 1]; //bị lỗi tại đây
                    }
                    a[vitri] = x;
                    n++;    
                }
    đổi thành
    Code:
      if (vitri >= 0 && vitri <= n-1)
                {
                    for (int i =n-1; i > vitri; i--)
                    {
                        a[i] = a[i - 1]; //bị lỗi tại đây
                    }
                    a[vitri] = x;
                    n++;    
                }

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Lũng Cú
    Bài viết
    65

    Trích dẫn Nguyên bản được gửi bởi luc13aka47 Xem bài viết
    Mảng a được khai báo cụ thể ra sao bạn ?

    Nếu mảng a có n phần tử thì khi truy cập a[n] sẽ : Index was outside the bounds of the array.
    Vì vậy vòng for của bạn nên :

    Visual C# Code:
    1. for (int i = n - 1; i > vitri; i--)  -> Trường hợp này mảng sẽ bị mất phần tử cuối
    2. {
    3.       a[i] = a[i - 1];
    4. }
    Cảm ơn các bạn rất nhiều, đúng là bên C# phải tăng mảng trước rồi mới gán, khác hẳn bên C.
    Mình sửa bằng Array.Resize

  5. #5
    Ngày gia nhập
    08 2014
    Bài viết
    1

    Trích dẫn Nguyên bản được gửi bởi duyanh_28 Xem bài viết
    Cảm ơn các bạn rất nhiều, đúng là bên C# phải tăng mảng trước rồi mới gán, khác hẳn bên C.
    Mình sửa bằng Array.Resize
    bài viết thật bổ ích!

Các đề tài tương tự

  1. Lỗi Index was outside the bounds of the array.
    Gửi bởi leminhvuong1990 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 02-10-2013, 11:04 AM
  2. gỡ lỗi Index was outside the bounds of the array giúp e với các bác
    Gửi bởi moon34 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 01-10-2013, 04:00 AM
  3. Lỗi : Index was outside the bounds of the array
    Gửi bởi nautilux trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 13-06-2013, 12:41 AM
  4. Algorithm cách khắc phục System.IndexOutOfRangeException: Index was outside the bounds of the array
    Gửi bởi spoon89 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 11-12-2012, 12:31 AM
  5. Lỗi: Index was outside the bounds of the array
    Gửi bởi thuan199 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 11-05-2011, 03:58 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn