我还在研究我的Java Diamond问题。
这是钻石的当前状态
我认为问题是for
循环就在这里,
我需要的只是打印那些空间然后我就完成了。
任何人都可以看到为什么我没有输入或运行我标记有问题的for
循环的明显原因?
//Bottom half of the diamond
int middleSpaces = sides + 2;
int downPreSpaces = 1;
int dRows = sides + 1;
for (int x = 1; x <= dRows; x++) {
if (x >= dRows) {
for (int z = 1; z <= sides + 1; z++) {
System.out.print(" ");
}
System.out.print("v");
}
if (x != dRows) {
for(int y = 1; y <= x; y++) {
System.out.print(" ");
}
System.out.print("\\");
//PROBLEM IS HERE
for (int e = middleSpaces - 2; e <= 0; e += 2) {
System.out.print(" ");
}
System.out.print("/\n");
}
答案 0 :(得分:3)
使用调试器逐步执行代码,并检查导致问题的位置的变量e和dRows的状态。
答案 1 :(得分:1)
你没有递减middleSpaces
它也没有正确初始化:
int middleSpaces = sides * 2; //NOTICE
int downPreSpaces = 1;
int dRows = sides + 1;
for (int x = 1; x <= dRows; x++) {
if (x >= dRows) {
for (int z = 1; z <= sides + 1; z++) {
System.out.print(" ");
}
System.out.print("v");
}
if (x != dRows) {
for(int y = 1; y <= x; y++) {
System.out.print(" ");
}
System.out.print("\\");
for (int e = middleSpaces - 2; e >= 0; e -= 1) {
System.out.print(" ");
}
middleSpaces-=2; //NOTICE
System.out.print("/\n");
}
答案 2 :(得分:0)
middleSpaces - 2可能小于dRows,否则其中一个外循环不起作用。
答案 3 :(得分:0)
请注意,dRows,middleSpaces和dmSpaces的值在您显示的代码中不会更改。这意味着有问题的内循环将始终打印相同数量的空格。
您可能意味着以下内容:
for(int e = middleSpaces - 2; e >= x; e -= 2) {
System.out.print(" ");
}
这可能是一个或一个东西,但更接近你想要获得的结果。