【发布时间】:2013-11-06 20:40:11
【问题描述】:
我目前还在学习java,所以这可能只是一个业余错误
其目的是“for”循环会在给定不同高度的条形图上绘制一个“条形图”数组(为糟糕的格式道歉)
static int[]cwMarks = new int[4];
static int[]examMarks = new int[4];
static int barWidth = 4; //Standard bar width
private static int posX = -15; //Decides X position of bar
private static int posY= 210; //Decides Y position of bar
static int barCount = 8; //Tracks number of bars needing to be drawn
static Bar[] barArr = new Bar[barCount]; //Array storing Bars
cwMarks[0]=50;
cwMarks[1]=100;
cwMarks[2]=20;
cwMarks[3]=100;
examMarks[0]=50;
examMarks[1]=100;
examMarks[2]= 20;
examMarks[3]= 30;
draw();
public static void draw()
{
for (int i=0,j=0;i<barCount;j++) //i represents the element of barArr, j represents element of cwMarks/examMarks
{
barArr[i].moveHorizontal(posX);
barArr[i].changeSize(barWidth, cwMarks[j]);
barArr[i].moveVertical(posY-cwMarks[j]);
barArr[i].makeVisible();
i++;
barArr[i].moveHorizontal(posX+barWidth+1);
barArr[i].changeSize(barWidth, examMarks[j]);
barArr[i].moveVertical(posY-examMarks[j]);
barArr[i].makeVisible();
i++;
posX=+5;
}
}
`
我假设这将创建 4 对 2 条,但循环似乎只执行它的代码两次(产生 2 对 2)。这是绘制的:
关于为什么会这样的任何想法?
【问题讨论】:
-
你确定它不是画 8 条吗? 1 向上,1 向下(在同一个 x 轴点),2 向上,2 尺寸为 0,2 向上是 8 条。
-
您考虑过使用调试器吗?或者至少在你的循环中添加一些 system.out?
-
哦,你每次循环都会使 i 的值加倍。
-
请在每个
i++之前插入类似System.out.println("Created bar "+i+" at "+<horizontal_position>+", "+<vertical position>);的内容,其中这些位置是来自 moveHorizontal 和 moveVertical 的位置。这应该有助于了解循环是否正确运行。 -
通过调试器运行它,或者在循环中打印出一些东西,这样你就可以看到你在哪里。