所以我的程序运行并从右上角开始绘制一排菱形。然后它向下移动一行并重复。它应该停在 4 行(由于画布大小),但它不会!
首先 for 语句绘制一个菱形。第二个 for 语句移动到下一个菱形。重复 7 次。
第三个 for 语句(这是我假设问题所在..)向下移动一行并重复前两个。
所有这些都完美运行!直到它没有停止!
它只是无限期地重复!
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 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++){ //Move to Next Diamond
steve.penUp();
steve.left(PI/3);
steve.forward(40);
steve.right(PI/3);
steve.penDown();
for (int k=1 ; (j>=7)&&(k<=4) ; j=j-7 , k++){ //Move to next row
steve.penUp();
steve.right(7*PI/6);
steve.forward((float)40*(sqrt(3.0)));
steve.left(PI/2);
steve.forward(280);
steve.left(2*PI/3);
steve.penDown();
}
}
}
display.close();
};
public static void main ( String[] args ) { DiamondTiles2 d = new DiamondTiles2(); };
}
我看到它的方式:最后一个 for 循环应该从 k==1 开始,然后每次将 k 增加一。它不应该重复过去 4 点,因为
for (int k=1 ; (j>=7)&&**(k<=4)** ; j=j-7 , k++)
请帮忙!:)
编辑:好的,所以 j 绝对是问题...解释为什么我要重置 J:当我没有在七点重置 7 时,它会绘制第一行,然后它会无限循环移动到新的步骤排。所以它会停止绘图并只是移动“下,右,下,右,下,右......等。
添加 j=j-7 解决了这个问题,但开始了这个新问题。由于 k<=4 不是真的,我认为哪个会得到解决……有什么理由似乎“忽略”了那个布尔值?
EDIT2:固定:将最后一个 for 语句更改为此 IF 语句:
if ((j>=7)&&(x<=3)){ //Move to next row
steve.penUp();
steve.right(7*PI/6);
steve.forward((float)40*(sqrt(3.0)));
steve.left(PI/2);
steve.forward(280);
steve.left(2*PI/3);
steve.penDown();
j=j-7;
x=x+1;
感谢所有帮助过我的人!这个网站上的惊人反应!