返回C#中arrayList中的最小整数

时间:2016-06-19 16:09:42

标签: c# arraylist

我最近在接受采访时被要求创建一种方法,以便进行以下检查:

  1. 检查ArrayList是否为空的代码
  2. 循环遍历ArrayList对象的代码
  3. 确保对象为整数的代码
  4. 检查它是否为空的代码,如果没有则将它与包含列表中最小整数的变量进行比较,如果小于那么 覆盖它。
  5. 返回列表中的最小整数。
  6. 所以我创建了以下方法

    static void Main(string[] args)
    {
        ArrayList list = new ArrayList();
        list.Add(1);
        list.Add(2);
        list.Add(3);
        list.Add(4);
        list.Add(5);
    
        Program p = new Program();
        p.Min(list);            
    }
    
    private int? Min(ArrayList list)
    {
        int value;                                         
        //Code to check if ArrayList is null
        if (list.Count > 0)
        {
           string minValue = GetMinValue(list).ToString();
    
           //Code to loop through ArrayList objects
           for(int i = 0; i < list.Count; i++)
           {                    
               //Code to make sure object is an integer
               //Code to check if it is null, and if not to compare it against a variable containing the
               //smallest integer from the list and if smaller overwrite it.
               if (Int32.TryParse(i.ToString(), out value) || i.ToString() != string.Empty)
               {
                   if (Convert.ToInt32(list[i]) < Convert.ToInt32(minValue))
                   {
                       minValue = list[i];
                   }
               }
             }
           }            
           return Convert.ToInt32(GetMinValue(list));
    }
    
    public static object GetMinValue(ArrayList arrList)
    {
           ArrayList sortArrayList = arrList;
           sortArrayList.Sort();
           return sortArrayList[0];
    }
    

    我认为上述情况有些正确,但是我不完全确定4?

2 个答案:

答案 0 :(得分:0)

我认为以下逻辑可能会对您有所帮助。它比当前更简单并使用int.TryParse()进行解析,这比Convert.To..()int.Parse()更好,因为它有一些内部错误处理,因此它不会抛出任何无效的异常输入。如果输入无效,则它会将0提供给out变量并返回false,我们可以假设转换失败。请参阅以下代码:

var arrayMin = listOfInt;
int currentNum = 0;
int yourNum = int.MaxValue;
bool isSuccess = true;
foreach (var item in listOfInt)
{
    if (int.TryParse(item.ToString(), out currentNum) && currentNum <= yourNum)
    {
        yourNum = currentNum;
    }
    else
    {
        isSuccess = false;
        break;
    }              
}
if(isSuccess)
    Console.WriteLine("Minimum Number in the array is {0}",yourNum);
else
    Console.WriteLine("Invalid input element found");

答案 1 :(得分:0)

简单版本:

private int? Min(ArrayList list)
{
    if (list == null || list.Count == 0) return null;
    return list.Cast<int>().Min();
}
相关问题