首页 > 解决方案 > 如何将布尔值的 2D 字段写入控制台?

问题描述

我在做这个家庭作业时遇到了麻烦。在作业中,我们需要使用 BFS 计算从 A 到 B 的最短路径。但是,首先我想声明一个布尔值的 2D 字段,其中“真”是可通过的图块,“假”是不可通过的。只有字符:.+?! 是可以通过的,其他的都不是。

在第一行,我声明了平面的长度和宽度,用整数 h 和 b 表示(忽略 m)。字段的长度正确完成,但宽度却没有。宽度应该是等于 b 的字符数。这就是我到目前为止所拥有的。

static void Main()
{
        int b, h;
        string m;

        string firstLine = Console.ReadLine();
        string[] declaration = firstLine.Split(' ');
        int.TryParse(declaration[0], out b);
        int.TryParse(declaration[1], out h);
        m = declaration[2];

        var input = new bool[h,b];
        for (int i = 0; i < h ; i++)
        {
            string s = Console.ReadLine();

            for (int j = 0; j < b ; j++)
            {
                foreach( char c in s)
                {

                    if (c.Equals('.') || c.Equals('!') || c.Equals('+') || c.Equals('?'))
                    {
                        input[i, j] = true;
                    }
                    else
                    {
                        input[i, j] = false;
                    }
                }
            } 
        }
        Console.WriteLine(input);
        Console.ReadLine();
    }
}

具有所需输出的输入示例:
input:
6 6 L(忽略 L)
MMMMMM
M...?M
M....M
M+...M
M...!M
MMMMMM

所需输出:
假假假假假假假
真假真真真假假真真真真假假
真真真真假假
真真
真真假假
假假假假假假

到目前为止,我仍然可以在每行输入任意数量的字符,而不是所需的最大值 b。

控制台现在也写 System.Boolean[,]

我究竟做错了什么?

标签: c#arraysboolean2d

解决方案


您的循环没有按预期工作!你基本上有不必要的嵌套,foreach 循环遍历整个字符串,而 2D 数组保持在同一个索引上,而且每当给定输入时,代码就会在数组的右侧移动,而不是向下移动。为了解决这两个问题,我首先遍历 y 值并删除 foreach 循环:

for (int y = 0; y < b ; y++)
        {
            string s = Console.ReadLine();

            for (int x = 0; x < h ; x++)
            {
                    char c = s[x];

                    if (c.Equals('.') || c.Equals('!') || c.Equals('+') || c.Equals('?'))
                    {
                        input[x, y] = true;
                    }
                    else
                    {
                        input[x, y] = false;
                    }

            } 
        }

编辑:我建议循环遍历数组来写出值,如果你直接输入它,控制台只会输入 Object 类型。


推荐阅读