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 个循环启动一次。它所做的是绘制 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,因此它始终为零,并且最里面的循环每次只运行一次。

于 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 回答