创建ImageJ计数器

时间:2017-05-13 02:30:34

标签: java if-statement conditional imagej

我正在尝试在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;
    }
}

非常感谢任何有关逻辑的建议。

2 个答案:

答案 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)

当i = 3时,

pathNames[i+1]抛出此异常。您可以将循环运行到pathNames.length-1。它只是一个临时解决方案,因为我在运行此代码时并不了解您的目的。您的柜台总是等于1或2.请分享您的目的以获得更多支持