如何解救这个任务?

时间:2018-05-08 09:26:21

标签: c# console-application

我想知道如何编写或编写一个代码,它将打印出来,没有人得到20分,而且必须编写一些行。除if (is20 == false)外,一切正常。如何解决?

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            double[,] points = new double[50, 5];
            Random r = new Random();
            for (int k = 0; k < 50; k++)
            {
                for (int j = 0; j < 5; j++)
                {
                    points[k, j] = r.NextDouble() * 5 + 15.5;
                    if (points[k, j] > 20) points[k, j] = 20;
                    Console.Write("{0:f1}", points[k, j]);
                    Console.Write(" ");
                }

                Console.WriteLine();
            }

            bestEstimated(points);
            Console.ReadLine();
        }

        public static void bestEstimated(double[,] points)
        {
            bool is20 = false;
            for (int line = 0; line < 50; line++)
            {    
                for (int column = 0; column < 5; column++)
                {
                    if (points[line, column] == 20)
                    {
                        Console.WriteLine("20 points got: " + line + " competitor");
                        is20 = true;
                        break;
                    }    
                }    
            }

            if (is20 == false)
            {
                Console.WriteLine("No one got 20 points: ");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

从您在问题下方的评论中疯狂猜测:

public static void bestEstimated(double[,] points)
{
    var not20Points = new List<int>();
    for (int line = 0; line < 50; line++)
    {    
        bool is20 = false;
        for (int column = 0; column < 5; column++)
        {
            if (points[line, column] == 20)
            {
                Console.WriteLine("20 points got: " + line + " competitor");
                is20 = true;
                break;
            }
        }

        if (is20 == false)
        {
            Console.WriteLine("competitor" + line + " didnt get 20 points"); //also can print it here if ya want...
            not20Points.Add(line);
        }
    }

    if (not20Points.Count == 50)
    {
        Console.WriteLine("No one got 20 points");
    }
    else
    {
        Console.WriteLine("Those lines did get 20 points: " + string.Join(",", Enumerable.Range(0, 50).Except(not20Points)));
        Console.WriteLine("Those lines didnt get 20 points: " + string.Join(",", not20Points));
    }
}

(更新了我的版本,如果至少有一列有20分,则只打印东西)

答案 1 :(得分:0)

你可以在else部分的内部循环中设置is20=false并在内部循环之后在外部循环中检查它。

public static void bestEstimated(double[,] points)
    {
        bool is20 = false;
        for (int line = 0; line < 10; line++)
        {

            for (int column = 0; column < 5; column++)
            {
                if (points[line, column] == 20)
                {
                    Console.WriteLine("20 points got: " + line + " competitor");
                    is20 = true;
                    break;
                }
                else
                {
                    is20=false;
                }

            }
            if (!is20)
            {
                Console.WriteLine("20 points not got: " + line + " competitor");
            }

        }
        if(is20 == false)
        {
            Console.WriteLine("No one got 20 points: ");
        }
    }