在设置值之前检查数组的长度

时间:2018-10-30 10:01:46

标签: java indexoutofboundsexception

我必须在字符串数组列表中设置值。我如何编写代码以避免数组超出范围的异常。 例如这是我的代码:

if (pager != null)
            {
                var totalRecords = query.Count();
                pager.TotalRecords = totalRecords;
                var data = query.Select(x =>
                    new AuditInfo
                    {
                        TypeFullName = x.audit.TypeFullName,
                        UserName = x.audit.UserName,
                        EventType = x.audit.EventType,
                        EventDateUTC = x.audit.EventDateUTC,
                        LogDetails = x.audit.LogDetails.ToList(),
                        Name = x.entaudits.Name,
                        Description = x.entaudits.Description
                    })
                    .OrderByDescending(x => x.EventDateUTC)
                    .Skip(pager.From)
                    .Take(pager.PageSize);
                try
                {
                    var list1 = data.ToList<AuditInfo>();
                }
                catch (Exception e)
                {
                }
                var list = data.ToList<AuditInfo>();
                pager.RecordCount = list.Count;
                return list;
            }
            else
            {
                var list = query.Select(x =>
                    new AuditInfo
                    {
                        TypeFullName = x.audit.TypeFullName,
                        UserName = x.audit.UserName,
                        EventType = x.audit.EventType,
                        EventDateUTC = x.audit.EventDateUTC,
                        LogDetails = x.audit.LogDetails.ToList(),
                        Name = x.entaudits.Name,
                        Description = x.entaudits.Description
                    })
                        .OrderByDescending(x => x.EventDateUTC)
                    .ToList<AuditInfo>();
                return list;
            }

我是一个初学者,我不知道如何检查我尝试在结构中设置的值的长度是否没有给出超出范围的异常数组。即应等于数组的长度。

1 个答案:

答案 0 :(得分:0)

  

我是一个初学者,我不知道如何检查值的长度   我试图在结构中设置不会给出数组   绑定异常。即应等于数组的长度。

由于Java中的集合基于0,因此数组arr的第一个元素为arr[0],最后一个元素为arr[arr.length-1]。知道这一点,您可以确保迭代变量(数组索引)始终为>=0<array.length

拥有index >= arr.length将导致IndexOutOfBoundsException

请记住,在您的代码中,您正在使用单个迭代变量来索引多个数组,如此处

XmlUtil.getFeature(_slotNames[j], childs.item(i)), slotValues[j])

您正在使用具有相同索引的_slotNames和slotValues,但是您使用j < slotValues.length来限制索引,因此它取决于slotValues的长度。如果两个数组的长度相等,那很好。但是,如果不是这样,那么如果_slotNames的元素少于slotValues的话,您将得到提到的异常。