2016-02-14 31 views
-1

我正在为我的考试进行学习并正在经历旧的测试。在应该知道长度时使用array.length与数组中元素的数量

其中一个类包含两个数组,每个数组都应该有20个元素。

当遍历数组时,最好是使用array.length还是使用数组中元素的数量更好。

例如,我们正在浏览一个数组并希望找到最大的教室。我写一个for循环,写它时,使用array.length还是二十更好?代码如下:

public Clsrm biggestClsrm() { 
    Clsrm classroom = new Clsrm(0, 0 , true); 

    for (int i = 0; i < _clsrms.length; i++) {// or should it be for (int i = 0; i < 20 ; i++) 
     if (_clsrms[i].isBigger(classroom)) { 
      classroom = new Clsrm(_clsrms[i]); 
     } 
    } 
} 

假设条件是应该的吗?

+1

代码重复从来不是一个好主意。硬编码20正在复制数组的大小。 – Tunaki

+1

你不应该假设。不要简单地假设阵列中有20个元素。由于这是一个测试,验证可能会被分级。安全地玩。 – Arc676

+0

@Arc676测试问题说有20个对象,这就是为什么我假设数组中有20个对象。 – user1454994

回答

3

使用_clsrms.length。考虑这个代码作为说明:

class BadLoop { 
    Clsrm _clsrms = new Clsrm[20]; 
    public Clsrm biggestClsrm() { 
     for (int i = 0; i < 20; i++) { 
      ... 
     } 
    } 
} 

数量20在代码重复两次 - 一次是在_clsrms声明,并再次在环。

如果有人在声明中更改2030,那么biggestClsrm()会在确定最大教室时忽略最后一个10教室。另一方面,如果声明从20更改为10,则biggestClsrm()将停止工作,因为它会崩溃。请注意,使用length而不是固定数字可以避免这两个问题。

本质上,代码的重复部分成为维修责任,这很容易通过使用length来避免。

相关问题