-1

私はJavaでアルゴリズムを構築しようとしていますが、これは醜い方法で次のようになります。

while (true) {
    Point p; //a point given in the class constuctor.
    p.x+=1*factor;
    checkColor(p); // a function that returns true or false for a pixel color.
    p.y+=1*factor;
    checkColor(p);
    p.x-=2*factor;
    checkColor(p);
    p.y-=*factor;
    ... ...
}

これはint係数を使用します。これはループ内のすべてのサイクルで増加しますが、私のポイントは、関数を呼び出すときに一度に1行ずつ実行される「アクションの行」を格納する方法があるかどうかです。

4

2 に答える 2

0

このようなことをするのはどうですか?

private processSequence = 0;
public void modifyPoint(Point p, int factor) {
  // do the stuff you need to do with x and y
  switch (processSequence) {
     case 0: p.x+= factor; break;
     case 1: p.y+=factor; break;
     ... etc
  }
  processSequence++;
  processSequence = processSequence % 4; 
}


...
while (true) {
  modifyPoint(p,factor);
  checkColor(p);
}

あなたが実際にやりたいことは、それ自体の質問から理解するのは簡単ではありません。

于 2012-06-25T22:22:11.067 に答える
0

私はあなたが何をしようとしているのかまだ手がかりがないのでSWAGですが、多分...

  Point p = new Point(/* something? */);
  for (int i = -1; i <= 1; i++) {
     for (int j = -1; j <= 1; j++) {
        if (i != 0 || j != 0) {
           Point p2 = new Point(p.x + i * factor, p.y + i * factor);
           checkColor(p2);
        }
     }
  }
于 2012-06-25T22:24:24.887 に答える