C#将int数字读取到数组中

时间:2014-11-12 01:02:26

标签: c# sudoku

using System;
using System.IO;

namespace Sudoku
{
    class Game
    {
        private int[,] puzzle = new int[9, 9];

        public void saveToFile()
        {
            StreamWriter str = new StreamWriter("SUDOKU.txt");
            for (int i = 0; i < 9; ++i)
            {
                for (int j = 0; j < 9; ++j)
                {
                    str.Write(puzzle[i, j] + " ");
                }
                str.Write("\t\n");
            }
            str.Close();
        }

        public void readFromFile()
        {
            clear();
            StreamReader str = new StreamReader("SUDOKU.txt");
            for (int i = 0; i < 9; ++i)
            {
                for (int j = 0; j < 9; ++j)
                {
                    puzzle[i, j] = Convert.ToInt32(str.Read());
                }
            }
            str.Close();
        }
    }
}

我无法从文件中下载数据。 保存工作正常,并具有txt文件的视图:

1 2 3 4 5 6 7 8 9 
4 5 6 7 8 9 1 2 3 
7 8 9 1 2 3 4 5 6 
2 1 4 3 6 5 8 9 7 
3 6 5 8 9 7 2 1 4 
8 9 7 2 1 4 3 6 5 
5 3 1 6 4 2 9 7 8 
6 4 2 9 7 8 5 3 1 
9 7 8 5 3 1 6 4 2 

如何在我的数组9x9中写入所有写入正确写入的所有数据?

1 个答案:

答案 0 :(得分:0)

不要使用需要您读取单个字符(或您指定的缓冲区)的str.Read(),而是尝试使用str.Readline()i的每次迭代读取一行。

public void readFromFile()
{
    StreamReader str = new StreamReader("SUDOKU.txt");
    for (int i = 0; i < 9; ++i)
    {
        string[] lineNumbers = str.ReadLine().Split(' ');
        for (int j = 0; j < 9; ++j)
        {
            puzzle[i, j] = Convert.ToInt32(lineNumbers[j]);
        }
    }
    str.Close();
}

一次读取一行(i的每次迭代),通过用空格字符分隔当前行,将行拆分为lineNumbers。然后,您的内部循环中的lineNumbers[j]可以访问当前行上的每个数字(j的每次迭代)。