与If和Else的误解

时间:2018-04-16 10:38:58

标签: c#

我是C#的新手,希望得到一些帮助!

我正在研究一些代码,让用户可以了解他农场的特定奶牛是否产奶量不足。

在第75行,if语句应打印出“不够好”的奶牛或告诉用户一切正常。但相反,它会永久地尝试打印Bad Cows。

Console.WriteLine("How many cows are in your herd?");
int CowNum = int.Parse(Console.ReadLine());

int Temp;
double TempD;
string TempS;
int MinimumVal = 6;
int MDIR = 4;

string[] BadList = new string[CowNum];
int[] Counter = new int[CowNum];
double[] Total = new double[CowNum];
string[] Days = new string[7] {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
string[] CowID = new string[CowNum];
double[,] CowYield = new double[CowNum, 7];


Random r = new Random();

for (int n = 0; n < CowNum; n++) // Sets Cow ID's
{
    Console.WriteLine("What is the ID of Cow: " + (n + 1) + "?" );
    TempS = (Console.ReadLine());
    CowID[n] = TempS;
}

for (int n = 0; n < CowNum; n++) // Sets the Yield of each cow to a certin day
    for (int x = 0; x < Days.GetLength(0); x++)
    {
        Console.WriteLine("What was the Yeild for Cow: " + CowID[n] + " on " + Days[x] + "?");
        TempD = double.Parse(Console.ReadLine());
        CowYield[n, x] = TempD;
        if (TempD < MinimumVal)
        {
            Counter[n] = Counter[n] + 1;
            Console.WriteLine(Counter[n]);
        }

        //Console.WriteLine("What was the Yeild for Cow: " + CowID[n] + " on " + Days[x] + "?"); //Randomly Generated 'Saves Time'
        //Temp = r.Next(0, 20);
        //Console.WriteLine(Temp);
        //CowYield[n, x] = Temp;
    }

for (int n = 0; n < CowNum; n++)
    for (int x = 0; x < Days.GetLength(0); x++)
        Total[n] = Total[n] + CowYield[n, x];

for (int n = 0; n < CowNum; n++)
{
    if (Counter[n] > MDIR)
    {
        BadList[n] = CowID[n];
        Console.WriteLine("asd" + BadList[n]);
    }
}


        int index = Array.IndexOf(Total, Total.Max()); // Gets index of Highest producing cow
TempS = CowID[index];
Console.WriteLine("\nThe Highest producing cow is Cow: " + TempS + ". with a whopping " + Total[index] + "L of Milk!\n");

if (BadList.GetLength(0) > 0)
{
    Console.WriteLine(BadList.GetLength(0));
    for (int n = 0; n < BadList.GetLength(0); n++)
    {
        Console.WriteLine(BadList[n]);
    }
}
else
{
    Console.WriteLine("None of your cows had less than 6L of milk for four or more days in a row!");
}



Console.ReadLine();

}

1 个答案:

答案 0 :(得分:0)

简而言之,您的代码失败了 (为了方便我们所有人,继续简化)

string[] thing = new string[200]
if (thing.Length>0)
{  Console.WriteLine("All wrong");}
else
{  Console.WriteLine("OK");}

你的长度总是200,因为你做得那么大。所以输出总是“全错”

但是,如果你有

List<String> thing = new List<String>();
//process list here, and use thing.Add(badcow)
if (thing.Count() >0 )
{  Console.WriteLine("All wrong");}
else
{  Console.WriteLine("OK");}

那么它会起作用,因为列表中可能有0个条目。它可能会产生两个答案,并会按照您的预期进行选择。