Java 在假定长度已知的情况下,使用array.length与数组中的元素数
我正在为考试而学习,并且正在经历旧的考试 其中一个类包含两个数组,每个数组中应该有二十个元素 在遍历数组时,最好使用Java 在假定长度已知的情况下,使用array.length与数组中的元素数,java,arrays,Java,Arrays,我正在为考试而学习,并且正在经历旧的考试 其中一个类包含两个数组,每个数组中应该有二十个元素 在遍历数组时,最好使用array.length还是使用数组中的元素数量 例如,我们正在遍历一个数组,希望找到最大的教室。我编写了一个for循环,在编写它时,使用array.length还是20更好?代码如下: public Clsrm biggestClsrm() { Clsrm classroom = new Clsrm(0, 0 , true); for (int i = 0; i
array.length
还是使用数组中的元素数量
例如,我们正在遍历一个数组,希望找到最大的教室。我编写了一个for循环,在编写它时,使用array.length
还是20更好?代码如下:
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]);
}
}
}
public Clsrm biggestClsrm(){
Clsrm教室=新的Clsrm(0,0,真);
对于(int i=0;i<\u clsrms.length;i++){//还是应该是(int i=0;i<20;i++)
如果(_clsrms[i].isbiger(教室)){
教室=新的Clsrm(_Clsrm[i]);
}
}
}
假设条件是应该的,安全吗?使用
\u clsrms.length
。考虑这个坏代码作为一个例子:
class BadLoop {
Clsrm _clsrms = new Clsrm[20];
public Clsrm biggestClsrm() {
for (int i = 0; i < 20; i++) {
...
}
}
}
类坏循环{
Clsrm _clsrms=新的Clsrm[20];
公共Clsrm biggestClsrm(){
对于(int i=0;i<20;i++){
...
}
}
}
编号20
在代码中重复两次-一次在\u clsrms
声明中,一次在循环中
如果有人将声明中的20
更改为30
,则biggestClsrm()
将在确定最大教室时忽略最后的10
教室。另一方面,如果声明从20
更改为10
,则biggestClsrm()
将停止工作,因为它将崩溃。请注意,使用length
而不是固定数字可以避免这两个问题
从本质上讲,代码的重复部分变成了维护责任,使用
长度可以很容易地避免,代码重复从来都不是一个好主意。硬编码20复制了数组的大小。您不应该假设。不要简单地假设数组中有20个元素。因为这是一个测试,验证可能是你将被评分的东西。小心点。@Arc676测试题说有二十个对象,这就是为什么我假设数组中有二十个对象。