c#从只包含正整数的数组中打印行

时间:2014-03-31 23:10:42

标签: c# arrays for-loop console

我非常接近,但我似乎无法绕过最后一步。 所以我想要的是拥有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();

            }

4 个答案:

答案 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