C# 如何在特定阶段打破循环
我有一个矩阵(int[8,8]),里面有二进制数字 我试图在控制台上写入最左边的列号,这样矩阵中就可以从这个列号的左侧得到三个1(从上到下读取,从左到写)。例如-在下面,列编号为2(列的索引从0到7): 00000000C# 如何在特定阶段打破循环,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
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)应该在断开之前;待执行的报表,仅供参考。