我有一个很大的家庭作业问题,我没有尝试解决其中的一小部分问题。该项目是生命游戏,因此在每个步骤中,细胞中的生物体必须考虑其周围的每个细胞。不使用对角线,我想在随机单元中开始考虑。
我已经采用了几种方法,但我在这方面做得最好。
第一部分 - 找到一个随机的x和y,它们是一个边,而不是一个对角线。我认为这是一个侧面abs(x)和abs(y)不能相同。我循环遍历随机尝试,直到abs()s不同。
第二部分 - 使用四个if()来确定当前边,然后将x,y更改为下一个边(顺时针方向)。
我的结果是循环在奇数位置停止,而绝不与abs()s不同。我怀疑while()表达式是错误的。我尝试了abs(x).equals(abs(y)),但发现该方法不适用于基元。所以我尝试了abs(x)!= abs(y),但这会导致奇怪的结果。
这是目前的努力。任何帮助,将不胜感激。
public static void main(String[] args) {
//jkbeg
System.out.println("objective in this section is" +
" to get a random side and then move clockwise around to others");
int targetx; //these will hold the next cell to use.
int targety;
// Part One - get random side to be starting cell
// n.b. abs(x) == abs(y) means diagnol cell, not a side
// first get randoms of 0 or 1 into targets.
// keep trying randoms until abs() are not equal
do {
targetx = (int) (Math.round(Math.random()));
targety = (int) (Math.round(Math.random()));
System.out.println("rando, not checked yet"+targetx +","+targety);
System.out.println("abs x "+Math.abs(targetx));
System.out.println("abs y "+Math.abs(targetx));
}while(Math.abs(targetx) == (Math.abs(targety)) );
System.out.println("after check for sides, not corners"+targetx +","+targety);
//Part two - walk around the sides clockwise
System.out.println("random start cell: "+targetx +","+targety);
for(int targetCounter=0; targetCounter<4; targetCounter++){
if ((targetx==1)&&(targety==0)){targetx=0;targety=1;} //top to right
if ((targetx==0)&&(targety==1)){targetx=-1;targety=0;} //right to bottom
if ((targetx==-1)&&(targety==0)){targetx=0;targety=-1;} //bottom to left
if ((targetx==0)&&(targety==-1)){targetx=1;targety=0;} //left to top
System.out.println("next cell clockwise: "+targetx +","+targety);
}
System.out.println("end *random side then walk around* here here");
System.exit(0);
} // main
//jkend
答案 0 :(得分:1)
我的结果是循环在奇数位置停止而从不停止 abs()不同。我怀疑while()表达式是错误的
System.out.println("abs x "+Math.abs(targetx));
System.out.println("abs y "+Math.abs(targetx));
检查这些行中的变量名称。
第二部分:每个if语句都会更改targetx和targety的值,以使值与下一个if语句匹配。因此,每个if语句都会执行,并且循环结束时targetx和targety的值是最后一个if语句中设置的值。
你应该使用if-else if结构。即使在每个if语句中设置的值与下一个if语句不匹配,您仍然希望使用if-else if结构,因为那样java就不必每次都通过循环检查所有4个条件。使用if和else if结构,如果匹配,则跳过其余部分。