我正在尝试在ImageJ中创建一个计数器,但我遇到了一个问题因为索引超出范围。显然问题是pathNames[i+1]
。
imgGrpCount = 1;
pathNames = newArray("/usr/local/data/1/", "/usr/local/data/1/", "/usr/local/data/2/", "/usr/local/data/2/");
function modifyImgGrpCount(imgGrpCount, pathNames, i) {
for(j = 0; j < pathNames.length; j++) {
if ( (pathNames[i] == pathNames[i+1]) ) {
imgGrpCount++;
} else {
imgGrpCount = 1;
}
return imgGrpCount;
}
}
非常感谢任何有关逻辑的建议。
答案 0 :(得分:1)
首先,我不明白您为什么在if条件下使用i-i是什么?由于for循环,我认为应该是j。 如果我的猜测是正确的,那么if中的j就是您必须将它包裹在另一个if中,询问您是否位于最后一个元素:
function modifyImgGrpCount(imgGrpCount, pathNames, i) {
for(j = 0; j < pathNames.length; j++) {
if(j!=pathNames.length-1) { //or j<pathNames.length-1
if ( (pathNames[j] == pathNames[j+1]) ) {
imgGrpCount++;
} else {
imgGrpCount = 1;
}
}
return imgGrpCount;
}
}
答案 1 :(得分:0)
pathNames[i+1]
抛出此异常。您可以将循环运行到pathNames.length-1
。它只是一个临时解决方案,因为我在运行此代码时并不了解您的目的。您的柜台总是等于1或2.请分享您的目的以获得更多支持