1

我这里有一些用于打印的代码,它从每页一个数组中打印一个信息块。

    double x = pf.getImageableX() + 1;
    double y = pf.getImageableY();
    double xMax = pf.getImageableWidth();
    double yMax = pf.getImageableHeight();

    if ((pageIndex < generation.length)) {
    //Graphics code
    y += (height of index) + 10;
    return PAGE_EXISTS; 
} else {
    return NO_SUCH_PAGE;
}
}

我想让索引不断增加,每页打印更多对象,直到 y 超过 yMax。那时,y 将重置,我可以继续在下一页上打印对象。

然而 print() 方法本身是递归的;因此,如果我尝试引入一个 for 循环,它只会一遍又一遍地打印相同的条目,直到 (pageIndex < generation.length)。

当 y > yMax 时如何打印新页面,同时还能打印数组中的所有元素?

4

1 回答 1

0

我不完全理解你的递归是如何工作的。也许看到电话会有所帮助。

如果此时 pageIndex 表示您所在的页面以及您在数组中的位置,则需要对其进行拆分。

int page; //what page you are on
int pageIndex; //where the element is on the page
int index; //where you are up to in the array

您将需要另一个案例来了解您是否仍在页面上或页面是否已完成。

if ((index < generation.length)) {
//Graphics code
y += (height of pageIndex) + 10;
    if(y > yMax){
        y = 0;
        pageIndex = 0;
        page++;
        return PAGE_EXISTS; 
    } else {
        pageIndex++;
        return PAGE_NOT_FULL; 
    }
} else {
    return NO_SUCH_PAGE;
}

同样,这可能不是您要寻找的,但这是我根据您的代码段做出的最佳猜测。

于 2012-05-18T01:32:37.257 回答