1

リストされている最後の for ループ (int 変数 n および o).. 私はどのような種類のプログラミングも初めてで、入門コースでは Dr Java といくつかの基本的なメディアを使用して、本質的にタートル ペンを作成します。ディスプレイに物を描きます。

私の最後のforループは(私の目には)最初にn <= oのときに開始する必要があると言っているようです。それで始まります。次に、 n=2 が <=o (1) ではないように更新する必要がありますが、最後の部分を無限にループし続けます...

import Media.*;
import static java.lang.Math.*;

public class DiamondTiles2 {

private TurtleDisplayer display;
private Turtle            steve;

public DiamondTiles2 (){

  display = new TurtleDisplayer();
  steve = new Turtle();
  display.placeTurtle(steve);

  steve.setSpeed(15);
  steve.forward(140);             // Moves Steve to the furthest right he needs to be
  steve.left(PI/2);
  steve.forward((float)1.5*(40*sqrt(3.0)));  // Moves Steve to the top (up 1.5 times the height of a diamond)
  steve.left(PI/6);
  steve.penDown();

  for (int m=1 ; m<=4 ; m++){
    for (int j=1 ; j<=7 ; j++){  //Diamond Drawing
      steve.forward(40);
      steve.left(2*PI/3);        
      steve.forward(40);
      steve.left(PI/3);
      steve.forward(40);
      steve.left(2*PI/3);
      steve.forward(40);
      steve.left(PI/3);
      for (int i=1 ; i<=1 ; i++){
        steve.penUp();
        steve.left(PI/3);
        steve.forward(40);
        steve.right(PI/3);
        steve.penDown();
        for (int k=1 ; j>=7 ; k++){
          for (int n=1, o=1 ; n<=o ; n=n+2){
            steve.right(7*PI/6);
            steve.forward((float)40*(sqrt(3.0)));
            steve.left(PI/2);
            steve.forward(280);
            steve.left(2*PI/3);*
          }
        }
      }
    }
  }  
  display.close();
};

基本的に、最終的な結果として、最後のループ (n,o) は j の 7 ループごとに 1 回だけ開始されます。それが行うことは、7 つのひし形を描画し、n,o ループがそれを下に移動して新しい行を開始し、そこでさらに 7 つのひし形を描画することです! しかし、それは無期限に上下に移動し続けます..

4

3 に答える 3

5

jの代わりにチェックしkます。

これ:for (int k=1 ; j>=7 ; k++)

次のようにする必要があります。for (int k=1 ; k<=7 ; k++)

また、 をインクリメントしないoため、常にゼロであり、最も内側のループは毎回 1 回だけ実行されます。

于 2012-10-03T19:02:32.383 に答える
2

あなたのこのサイクルを見てください:

for (int k=1 ; j>=7 ; k++) {
    ...
}

jが の値を取る場合7、内部は変更されないため、このループは終了しjません。

于 2012-10-03T19:03:21.780 に答える
0

休憩はどこですか?

for (int k=1 ; j>=7 ; k++){
于 2012-10-03T19:04:44.473 に答える