我非常接近,但我似乎无法绕过最后一步。 所以我想要的是拥有2d矩阵并仅打印具有所有正整数的行。
现在我的代码只是取出0或负数的整数,但如果所述行包含0或负数,我需要删除整行。
这就是我现在要做的事情
输入:
1 2 6 4
1 5 0 9
输出:
1 2 6 4
1 5
所以基本上它不应该打印第二行b / c它有一个非正整数
我做错了什么?
感谢您抽出宝贵时间仔细研究一下!
static void Main(string[] args)
{
// reads in multiples lines( array from console)
List<string> L = readAllLines();
// feeds read lines into matrix
int[,] m = convertListToIntMatrix(L);// feeds read lines into matrix
int Rows = m.GetLength(0);
int Cols = m.GetLength(1);
for (int r = 0; r < Rows; r++)
{
for (int c = 0; c < Cols; c++)
{
if (m[r, c] <= 0)
{
break;
}
else Console.Write("{0} ", m[r, c]);
}
Console.WriteLine();
}
答案 0 :(得分:0)
当你找到0时你会中断,但你之前输出了所有内容。相反,您可以设置一个标志,然后在未设置标志的情况下对其进行评估以输出该行。你仍然会打破,但推迟所有输出,直到你知道行是好的。
答案 1 :(得分:0)
你有机会参加吉姆哈里斯的PP2课程吗?您还可以设置一个变量来计算行中有多少正数,如果它等于行中的数字或整数,则打印出该行。
答案 2 :(得分:0)
将循环更改为:
for (int r = 0; r < Rows; r++)
{
bool rowOkay = true;
for (int c = 0; c < Cols; c++)
{
if (m[r, c] <= 0)
{
rowOkay = false;
}
}
if (rowOkay)
{
for(int i=0;i<Cols;++i) {Console.Write("{0} ", m[r,i]);}
Console.WriteLine();
}
}
答案 3 :(得分:0)
如果您正在使用列表集合,只需检查列表的Min()值;
list1.Min() <= 0