首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将布尔值的2D字段写入控制台?

如何将布尔值的2D字段写入控制台?
EN

Stack Overflow用户
提问于 2019-06-19 21:09:24
回答 1查看 36关注 0票数 0

我在做作业时遇到了麻烦。在分配中,我们需要使用BFS计算从A到B的最短路径。但是,首先我要声明一个二维的布尔值字段,其中'true‘是一个可通行的,而'false’则是无法通过的。只有.+?!所有其他人都不是。

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

代码语言:javascript
复制
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();
    }
}

具有所需输出的输入示例:

投入:

6升(忽略L)

美姆

M.?M

M.M

M+...M

M.!M

美姆

期望产出:

假假

假真假

假真假

假真假

假真假

假假

到目前为止,我仍然可以按行输入多少字符,而不是输入所需的最大值b。

另外,控制台现在写System.Boolean,

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-19 21:46:04

你的循环不像预期的那样工作!基本上,您有不必要的嵌套,foreach循环遍历整个字符串,而2D数组停留在相同的索引上,而且每当输入给定时,代码就在数组的右边,而不是向下。为了解决这两个问题,我首先遍历y值,然后删除foreach循环:

代码语言:javascript
复制
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;
                    }

            } 
        }

编辑:我建议循环遍历数组来写出值,如果直接将对象类型提供给它,控制台就会键入对象类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56675879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档