Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在特定阶段打破循环_C# - Fatal编程技术网

C# 如何在特定阶段打破循环

C# 如何在特定阶段打破循环,c#,C#,我有一个矩阵(int[8,8]),里面有二进制数字 我试图在控制台上写入最左边的列号,这样矩阵中就可以从这个列号的左侧得到三个1(从上到下读取,从左到写)。例如-在下面,列编号为2(列的索引从0到7): 00000000 01000000 10000000 01000000 00101000 00000110 00000010 亿 我使用此代码,但它不起作用,我已经被它卡住了: for (int column = 0; column < 8; column++) { for (in

我有一个矩阵(int[8,8]),里面有二进制数字

我试图在控制台上写入最左边的列号,这样矩阵中就可以从这个列号的左侧得到三个1(从上到下读取,从左到写)。例如-在下面,列编号为2(列的索引从0到7):

00000000
01000000
10000000
01000000
00101000
00000110
00000010
亿

我使用此代码,但它不起作用,我已经被它卡住了:

for (int column = 0; column < 8; column++)
{
    for (int row = 0; row < 8; row++)
    {
        int counter=0;
        if (matrix[row, column] == 1)
        {
            counter++;
        }
        if (counter==3)
        {
            break;
            Console.WriteLine(column);
        }
    }
}
for(int column=0;column<8;column++)
{
用于(int行=0;行<8;行++)
{
int计数器=0;
if(矩阵[行,列]==1)
{
计数器++;
}
如果(计数器==3)
{
打破
控制台写入线(列);
}
}
}

您的计数器应位于内部环路和控制台之外。中断前写入线:

        for (int column = 0; column < 8; column++)
        {
            int counter=0;
            for (int row = 0; row < 8; row++)
            { 
                if (matrix[row, column] == 1)
                {
                    counter++;
                }
                if (counter==3)
                {
                    Console.WriteLine(column);
                    break;
                }
            }                    
        }
for(int column=0;column<8;column++)
{
int计数器=0;
用于(int行=0;行<8;行++)
{ 
if(矩阵[行,列]==1)
{
计数器++;
}
如果(计数器==3)
{
控制台写入线(列);
打破
}
}                    
}

将计数器放在两个环路外,并在控制台后的中断处。Writeline

        var counter=0;
        for (var column = 0; column < 8; column++)
        {
            for (var row = 0; row < 8; row++)
            { 
                if (matrix[row, column] == 1)
                {
                    counter++;
                }
                if (counter==3)
                {
                    Console.WriteLine(column);
                    break;
                }
            }                    
        }
var计数器=0;
用于(变量列=0;列<8;列++)
{
对于(变量行=0;行<8;行++)
{ 
if(矩阵[行,列]==1)
{
计数器++;
}
如果(计数器==3)
{
控制台写入线(列);
打破
}
}                    
}

我认为最好先检查第二步中的计数,使用计数器++这有助于执行较低的操作

 int counter=0;
        for (int row = 0; row < 8; row++)
        { 
            if (matrix[row, column] == 1)
            {
                if (counter==3)
                  {
                    Console.WriteLine(column);
                    break;

                  }
                else
                  {
                   counter++;
                  }
            }


        }
int计数器=0;
用于(int行=0;行<8;行++)
{ 
if(矩阵[行,列]==1)
{
如果(计数器==3)
{
控制台写入线(列);
打破
}
其他的
{
计数器++;
}
}
}

上述解决方案仅中断计数器增加的内部循环,并继续运行其余LOPP(外部和内部不增加计数器-达到3时,仍为3,并继续处理其余作业,考虑到计数器为3) 因此,它在控制台上给出从1(计数器为3的第一列)到7(直到最后一列)的结果。 如何以这样的方式断开循环,即只给我一行结果,并断开两个循环,一个计数器得到3?

您的控制台。WriteLine(column)应该在断开之前;待执行的报表,仅供参考。