我有一个矩阵(int [8,8]),里面有二进制数字。
我正在尝试在控制台上写下最左边的列号,这样在列号左侧的矩阵中有三个1可用(从上到下读,左到写)。例如 - 在下面,列号将为2(列的索引从0到7):
00000000
01000000
千万
01000000
00101000
00000110
00000010
00000000
我使用此代码,但它无法正常工作,我已经坚持使用它了:
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);
}
}
}
答案 0 :(得分:1)
以上解决方案仅打破计数器增加的内循环并继续运行其余的lopps(外部和内部而不增加计数器 - 它达到3时它保持3并继续处理其余的工作考虑柜台是3) 因此,它在控制台上从1(计数器为3的第一列)到7(直到最后一列)给出结果。 如何以这样的方式打破循环,它只给我一行,并打破两个循环,计数器得到3?
答案 1 :(得分:0)
你的计数器应该在内部循环之外,在休息之前应该是Console.WriteLine:
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;
}
}
}
答案 2 :(得分:0)
将你的计数器放在两个循环之外,然后在Console.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;
}
}
}
答案 3 :(得分:0)
我认为最好首先检查计数第二步使用计数器++这有助于你做更低的动作
int counter=0;
for (int row = 0; row < 8; row++)
{
if (matrix[row, column] == 1)
{
if (counter==3)
{
Console.WriteLine(column);
break;
}
else
{
counter++;
}
}
}