30/09/2018, 22:38
Về mảng Jagged Arrays trong c#
em có một mảng trong c# bây giờ em muốn nhập vào số phần từ cho từng mảng sau đó lại nhập từng phần tử vào mảng nhưng không được code của em đâu mong các bác chỉ giáo nha
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nhiendo
{
class Program
{
static void Main(string[] args)
{
int[][] a = new int[4][];
int[]b = new int [4];
for(int i=0;i<4;i++)
{
Console.Write("moi cac ban nhap so phan tu cua mang :");
b[i] = Convert.ToInt16(Console.ReadLine());
}
for(int i=0;i<4;i++)
{
for(int j=0;j<b[i];j++)
{
Console.Write("moi cac ban nhap phan tu");
a[i][j] = Convert.ToInt16(Console.ReadLine());
}
}
}
}
}
Bài liên quan
Code của cậu có 1 số vấn đề.
Đây là một cách khai báo mảng 2 chiều. a đã xác định có chiều dài =4. Nhưng a[x] thì chưa khởi tạo nên khi truy xuất đến a[i][j] sẽ báo lỗi NullReferenceException.
=> Hay khởi tạo a[x] đi.
Hàm chuyển đổi một chuỗi nhập từ bàn phím. Nhưng không kiểm tra định dạng và ngoại lệ nên sẽ có thể dính lỗi nếu chuỗi nhập vào không phải định dạng số. Ví dụ nhập “ABC” là đứt nhị.
=> Hay dung tryparse hoặc try-catch để xử lý ngoại lệ.
Không có liên hệ nào giữa b[I] và a[I].Length cả. Có thể sẽ ném ra một ngoại lệ “out of bound” nếu b[I] > a[I].Length.
=> Kiểm tra độ dài a[I] và giá trị b[I]
ý em là nhập số phần từ cho a[][] tức là mỗi một mảng con sẽ có bao nhiêu phần tử là do người dùng nhập vào ý anh à
Sẽ không có kiểu đó đâu. Mình nhớ là rất nhiều ngôn ngữ không làm được điều đó. Mảng là các phần tử lien tiếp nhau nên nếu không xác định được chiều dài mảng thì không biết chương trình sẽ tạo ra nó như thế nào nữa. a[] chỉ có thể chỉ dùng để khai báo một mảng tĩnh (không biết gọi sao đành gọi vậy). Tức là só lượng các phần tử đã được cố định và khởi tạo cùng với a.
Mảng sinh ra thì kích thước của nó cố định. Nếu bạn muốn thay đổi kích thước thì chỉ có cách tạo mới mảng thôi.
Còn bạn muốn có phần tử không cố định thì dung các kiểu khác. Như Array, List, …
a[4][] phần tử thứ nhất là a[0][] thì em muốn số phần tử của mảng này do người dungfn hập vào ko được hả anh
Bạn làm được điều đó.
Nó rất going với mảng 2 chiều khai báo bang con trỏ trong C++ :
em cảm ơn anh em làm được rồi ạ
không làm vòng lặp được hả anh
Mình không biết làm vòng lặp là làm kiểu gì ?
ý em là thế nào em có một mảng đa chiều trong c# vd là int[][]a = new int [4][0]
và bây giờ em muốn nhập số phần tử của các mảng sau đó lại nhập vào từng phần tử của mỗi mảng con cảm ơn anh em làm được rồi anh à nhờ cái dòng này của anh này a[0] = new int[num] không biết đây là kiến thức gì nhỉ
code của em đây anh à
cảm ơn anh nha
Thực ra trước lúc em hỏi bài này anh chưa bao giờ dùng : int[][] a = new int[y][x] cả. Thấy lạ vác VS ra test thử viết đại thế lại được. Bởi vì anh toàn dùng mảng có kích thước cố định nên toàn chơi :
Chỗ này của em anh nghĩ nên viết gộp lại cho ngắn
ok anh muộn rồi anh em mình ngủ ngon thôi mà anh để gia tộc họ đểu ngủ trước à em là đỗ nhiên ngày trước là jobs apples steve kết bạn facebook mà ông không đồng ý gì cả
Anh sao mà biết được Gia Tộc Họ Đểu ngủ lúc nào.
Facebook thì cách đây 1 năm cãi nhau với gấu (giờ thành sư tử) nên thề giời không dùng nữa. Ai dè bỏ được đến giờ
rước người ta về rồi còn gì nữa à