为什么这个for循环不能多次循环?

时间:2013-11-06 20:40:12

标签: java arrays for-loop

我目前还在学习java,所以这可能只是一个业余错误

意图是'for'循环会在条形图上绘制一个'Bars'数组,给出不同的高度(对于格式不佳的道歉)

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)。这就是:

enter image description here

关于这是为什么的任何想法?

3 个答案:

答案 0 :(得分:1)

(int i=0,j=0;i<barCount;j++)
看看吧。 J ++? 不应该是:

for (int i=0;i<barCount;i++)

答案 1 :(得分:1)

posX=+5更改为posX+=10(或posX+=15,具体取决于您希望的外观。您的代码有2个错误:

  1. 您每次都将posX设置为5而不是递增它。
  2. 您正在通过太小的数字来递增它。即使修复了第一个错误,在第一个循环中,你在xPos -15和-10处绘制条形图,然后将xPos增加到-10并在xPos -10和-5处绘制条形图(参见:你已经绘制了-10两次已)

答案 2 :(得分:0)

难怪你得到很多没有答案的观点。我也说不出来。这里有几个提示。

将代码放在方法中,而不是将所有内容都设置为静态。如果没有别的,请尝试public void run(){}。在main中创建一个实例并调用run。

不要在循环外更新for循环中的变量。在一个更大的循环中,这将是令人困惑的。

尝试使用两个for循环而不是现在的kloogie。

通过删除图形代码并使用有意义的消息执行System.out.println()来测试循环逻辑。