第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讀取 txt 文件時 Array2D 的索引超出限制

讀取 txt 文件時 Array2D 的索引超出限制

C#
阿晨1998 2022-01-09 15:30:04
我是 C# 編程的新手,我正在嘗試從 txt 讀取文件,但是每次執(zhí)行這段代碼時,我都會使索引超出限制,即使我進(jìn)行了調(diào)試,我也無法為這種情況找到解決方案.我確定這是否容易,但我是 C# 的新手,感謝您查看代碼。  static void importFiles(string[,] matrix)            {                var path = @"export/file.txt";        int start = getInsertIndex(matrix);  if (File.Exists(path))        {            string[] fileLines = File.ReadAllLines(path);            if (fileLines.Length == matrix.GetLength(0))                {                string[,] map = new string[fileLines.Length, matrix.GetLength(1)];                for (int i = 0; i < fileLines.Length; i++)                {                    string line = fileLines[i];                    for (int j = 0; j < matrix.GetLength(1); j++)                    {                        string[] split = line.Split(';');                        matrix[start, j] = split[j]?.Trim();                    }                    start++;                }            } } static int getInsertIndex(string[,] matrix)        {            for (int j = 0; j < matrix.GetLength(0); j++)            {                if (string.IsNullOrEmpty(matrix[j, 0])) return j;            }            return -1;        }我已經(jīng)更改了代碼,但是當(dāng)使用嵌套的 for 來可視化矩陣內(nèi)部的內(nèi)容時,我什么也沒得到。我似乎無法理解為什么要執(zhí)行該方法,并且在矩陣中什么也沒有。
查看完整描述

2 回答

?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個贊

在我看來,您事先并不知道文件的行數(shù),并且在拆分行時也不知道項(xiàng)目的數(shù)量。在這種情況下,我不會使用固定矩陣,而是使用字典等。


static void Main(string[] args)

        {

            Dictionary<int, string[]> filesData = new Dictionary<int, string[]>();

            importFiles(filesData);



        }


        static void importFiles(Dictionary<int, string[]> filesData)

        {

            var path = @"export/file.txt";



            if (File.Exists(path))

            {

                string[] fileLines = File.ReadAllLines(path);


                for (int i = 0; i < fileLines.Length; i++)

                {

                    string line = fileLines[i];

                    string[] split = line.Split(';');


                    for (int j = 0; j < split.Length; j++)

                    {

                        split[j] = split[j].Trim();

                    }

                    int index = filesData.Count == 0 ? 0: filesData.Keys.Max(); 

                    filesData.Add(index + 1, split);


                }

            }

        }


查看完整回答
反對 回復(fù) 2022-01-09
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個贊

如果矩陣中的行數(shù)與讀取的行數(shù)不同(例如拋出異常),您可以在代碼中處理情況:


static void importFiles(string[,] matrix)

{

    var path = @"export/file.txt";

    if (!File.Exists(path)) return;


    string[] fileLines = File.ReadAllLines(path);


    if(fileLines.Length != matrix.GetLength(0))

        // here you have couple of opitions

        // throw new ArgumentException("Number of rows in passed matrix is different from number of lines in a file!");

        // or just do nothing:

        return;


    string[,] map = new string[fileLines.Length, fileLines[0].Split(';').Length];


    for (int i = start; i < fileLines.Length; i++)

    {

        string line = fileLines[i];

        for (int j = 0; j < matrix.GetLength(1); j++)

        {

            string[] split = line.Split(';');

            matrix[i, j] = split[j]?.Trim();

        }

    }   

}

或者你可以matrix在你的方法中初始化你的數(shù)組:


string[] fileLines = File.ReadAllLines(path);

// c is number of columns, that you are using now

string[,] matrix = new string[fileLines.Length, c];


查看完整回答
反對 回復(fù) 2022-01-09
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號