C#怎么读取txt文件并存入二维数组?

para2725 2014-05-17 02:06:40
先声明一下哈:没学C#但是老师布置了一个题目,就在网上一点一点查,问题应该很弱智,希望大神谅解哈。
我需要读取一个txt文件,是一个10*10的0和1的数组,中间用,隔开,要把它存入一个二维数组,应该怎么做?
另外还需要画一个10*10的格子,0和1用不同的颜色表示,又该怎么做?
感激不尽啊!!!
...全文
991 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
para2725 2014-05-20
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
话说当年在学校读书的时候我就有一个非常纯粹地“学院派”老师 线性规划不让我过,理由是我所有地验算都少一张表,该3张表地我就2张,该4张表地我就3张,后来我找他跟他说“额,我用地是改进型单纯形法”,他说“我都没教改进型,你用啥用,不准用,按标准单纯形你所有演算都错,不及格补考去吧”
呵呵,我这门课的老师很懂得变通的。而且他也不是教我们编程的,他的目的是让我们自学C#因为我们没学过但是专业后续课程又需要用到。他经常在班上抱怨培养计划不合理,呵呵。
para2725 2014-05-20
  • 打赏
  • 举报
回复
引用 10 楼 sp1234 的回复:
没学c#你的老师给你布置这个作业?你上的学校忑高端了,哈哈。
呵呵,我们只学了C,去年暑假专业有一周时间实训,自己看C#,期间接触了一些皮毛。
para2725 2014-05-20
  • 打赏
  • 举报
回复
引用 9 楼 dickwxyz 的回复:
[quote=引用 8 楼 para2725 的回复:] @dickwxyz 基本做出来了 但是图形画出来和txt的不一致 方向反了 旋转90度再从后面看就是一致的 该怎么处理啊
重新再赋值吧,弄一个算法[/quote]哦,后面弄出来了,把a的 i 和 j 分别赋给b的 j 和 i 就行了,谢谢你哈。
  • 打赏
  • 举报
回复
没学c#你的老师给你布置这个作业?你上的学校忑高端了,哈哈。
dickwxyz 2014-05-18
  • 打赏
  • 举报
回复
引用 8 楼 para2725 的回复:
@dickwxyz 基本做出来了 但是图形画出来和txt的不一致 方向反了 旋转90度再从后面看就是一致的 该怎么处理啊
重新再赋值吧,弄一个算法
para2725 2014-05-17
  • 打赏
  • 举报
回复
@dickwxyz 基本做出来了 但是图形画出来和txt的不一致 方向反了 旋转90度再从后面看就是一致的 该怎么处理啊
dickwxyz 2014-05-17
  • 打赏
  • 举报
回复
前面有点不对。。 看看这个

private void Form2_Load(object sender, EventArgs e)
        {
            string path = "C:\\Users\\dick\\Desktop\\1.txt";//输入绝对路径
            string[][] a = new string[10][];
            int[][] b=new int[10][];
            if (File.Exists(path))
            {
                StreamReader sr = new StreamReader(path);
                
                for (int i = 0; i < 10; i++)
                {
                    string strline = sr.ReadLine();
                    a[i] = strline.Split(',');
                    b[i] = new int[10];
                }   //存入数组b

                sr.Close();
             }
            
            Graphics g = this.panel1.CreateGraphics();
            for (int j = 0; j < 10; j ++)
            {
                for (int i = 0; i < 10; i ++)
                {
                    
                    b[i][j] = Convert.ToInt32(a[i][j]);
                    
                    if (b[i][j] == 0)
                    {
                        g.FillRectangle((Brush)Brushes.Black, 10*i, 10*j, 10, 10);
                    }
                    else 
                    {
                        g.FillRectangle((Brush)Brushes.White, 10*i, 10*j, 10, 10);
                    }
                }
            }
                
        }
d1070193993 2014-05-17
  • 打赏
  • 举报
回复
 Encoding code = Encoding.Default;
            var file = File.Open("World.txt", FileMode.Open);
            List<string> txt = new List<string>();
            using (var stream = new StreamReader(file, code))
            {
                while (!stream.EndOfStream)
                {
                    txt.Add(stream.ReadLine());
                }
            }
            var array = new string[100, 100];
            var line = 0;
            txt.ForEach(t =>
            {
                var row = 0;
                t.Split(',').ToList().ForEach(p =>
                {
                    array.SetValue(p, line, row);
                    row++;
                });

                line++;
            });
            file.Close();
这个是读取TXT文件,以,分割,并保存至array数组中
dickwxyz 2014-05-17
  • 打赏
  • 举报
回复
前面要加这两句

using System.IO;

using System.Drawing.Drawing2D;
dickwxyz 2014-05-17
  • 打赏
  • 举报
回复
新建一个窗体,拉一个panel控件,size属性设成100,100,双击窗体修改事件。没有运行过不知道对不对?

private void Form1_Load(object sender, EventArgs e)
        {
            string path = "";//输入绝对路径
            string[][] a = new string[10][];
            if (File.Exists(path))
            {
                StreamReader sr = new StreamReader(path);
                
                for (int i = 0; i < 10; i++)
                {
                    string strline = sr.ReadLine();
                    a[i] = strline.Split(',');
                }   //存入数组a

                sr.Close();
             }
            Graphics g = this.panel1.CreateGraphics();
            for (int j = 0; j < 100; j = j + 10)
            {
                for (int i = 0; i < 100; i = i + 10)
                {
                    if (Convert.ToInt32(a[i][j]) == 0)
                    {
                        g.FillRectangle(Brushes.Black, i, j, 10, 10);
                    }
                    else 
                    {
                        g.FillRectangle(Brushes.White, i, j, 10, 10);
                    }
                }
            }
        }
wanghui0380 2014-05-17
  • 打赏
  • 举报
回复
话说当年在学校读书的时候我就有一个非常纯粹地“学院派”老师 线性规划不让我过,理由是我所有地验算都少一张表,该3张表地我就2张,该4张表地我就3张,后来我找他跟他说“额,我用地是改进型单纯形法”,他说“我都没教改进型,你用啥用,不准用,按标准单纯形你所有演算都错,不及格补考去吧”
wanghui0380 2014-05-17
  • 打赏
  • 举报
回复
1.固定字符分割的文本文件,称之为csv文件 2.传统ado.net就可以直接读取这种文件入datatable 3.datatable当然也是种“二维表”形式 当然如果你要碰上那种非常纯粹地学院派老师,我上面说地他一个字都不会认地。他会让你readerline,然后split,然后压入二维数组 最后显示部分就不说了,那个纯粹就是技巧了,你自己用gdi画ok,或者就丢10个label(或button)也成
jiawaziaixialing 2014-05-17
  • 打赏
  • 举报
回复
前一个问题,用读取字符串的方式把txt的所有内容读出,存到个变量string中,用split(‘,’)分割一个一个赋值到二维数组中,思路是这样,画格子那个貌似可以用GDI,不懂

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧