1

ここには、配列から 1 ページに 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 に答える