挣扎于讲师教程

时间:2016-07-16 01:10:15

标签: c#

我有一项任务要求我从用户请求数组大小,然后请求数字填充数组。该程序只打印每个循环的唯一编号。它还会通知用户他们输入的号码是否重复。我已经完成了这个工作,它应该工作。然后教师发布了一个关于如何/应该如何编写的教程视频。该代码与我的代码完全不同,我试图重写它以理解她的逻辑。我无法按照教程所示的那样开始工作,我不理解她所包含的一些内容。有人可以看看这个,并帮助我理解她想要做什么以及它是否按书面工作?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DuplicateHandsOn
{
    class Program
    {
        static void Main(string[] args)
        {
            //create an array of type int
            int[] aList;

            //create a counter to keep track of how many numbers have been entered
            int counter = 0;

            //create a boolean flag to let us know whether the number can be added or not
            bool isDuplicate = false;

            //ask the user how many numbers they will be entering
            Console.WriteLine("How many numbers will you enter?");
            int arraySize = Convert.ToInt32(Console.ReadLine());

            //initialize the array with that amount
            aList = new int[arraySize];

            while (counter < arraySize)
            {
                //prompt the user for the first number
                Console.Write("Enter Number: ");
                int num1 = Convert.ToInt32(Console.ReadLine());

                //check if the number is between 10 and 100
                if (num1 >= 10 || num1 <= 100)
                {
                    //check if this number exists in the array
                    for (int i = 0; i < aList.Length; i++)
                    {
                        if (aList[i] == num1)
                        {
                            //this number exists in the list
                            Console.WriteLine("{0} has already been entered", aList[i]);
                            isDuplicate = true;
                        }
                    }

                    if (isDuplicate)
                    {
                        //put the number into the array
                        aList[counter] = num1;
                    }

                    //print the array
                    for (int j = 0; j < aList.Length; j++)
                    {
                        //exclude zeros
                        if (aList[j] == 0)
                        {
                            continue;
                        }
                        else
                        {
                            Console.WriteLine(aList[j]);
                        }
                    }

                    //increment the counter
                    counter++;

                    //reset the flag
                    isDuplicate = false;
                }
                else
                {
                    Console.WriteLine("Numbers should be between 10 and 100");
                }
            }

            #if DEBUG
            Console.ReadKey();
            #endif

        }
    }
}

1 个答案:

答案 0 :(得分:1)

代码中有三个错误,我遇到了很多样式问题,但很容易指出错误。我已添加// FIX条评论以显示我所做的更改,希望它有意义。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DuplicateHandsOn
{
    class Program
    {
        static void Main(string[] args)
        {
            //create an array of type int
            int[] aList;

            //create a counter to keep track of how many numbers have been entered
            int counter = 0;

            //create a boolean flag to let us know whether the number can be added or not
            bool isDuplicate = false;

            //ask the user how many numbers they will be entering
            Console.WriteLine("How many numbers will you enter?");
            int arraySize = Convert.ToInt32(Console.ReadLine());

            //initialize the array with that amount
            aList = new int[arraySize];

            while (counter < arraySize)
            {
                //prompt the user for the first number
                Console.Write("Enter Number: ");
                int num1 = Convert.ToInt32(Console.ReadLine());

                // FIX: This should be && instead of || to test if
                // both of these conditions are true to match
                // the comment
                //check if the number is between 10 and 100
                if (num1 >= 10 && num1 <= 100)
                {
                    //check if this number exists in the array
                    for (int i = 0; i < aList.Length; i++)
                    {
                        if (aList[i] == num1)
                        {
                            //this number exists in the list
                            Console.WriteLine("{0} has already been entered", aList[i]);
                            isDuplicate = true;
                        }
                    }

                    // FIX: This should only happen if the number
                    // is not a duplicate
                    if (!isDuplicate)
                    {
                        //put the number into the array
                        aList[counter] = num1;

                        // FIX: Move this line into here to only increment 
                        // the counter if th enumber is placed in the array
                        //increment the counter
                        counter++;
                    }

                    //print the array
                    for (int j = 0; j < aList.Length; j++)
                    {
                        //exclude zeros
                        if (aList[j] == 0)
                        {
                            continue;
                        }
                        else
                        {
                            Console.WriteLine(aList[j]);
                        }
                    }

                    //reset the flag
                    isDuplicate = false;
                }
                else
                {
                    Console.WriteLine("Numbers should be between 10 and 100");
                }
            }

#if DEBUG
            Console.ReadKey();
#endif

        }
    }
}