0

我目前仍在学习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)。这是绘制的:

在此处输入图像描述

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

4

3 回答 3

1

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

  1. 您每次都将 posX 设置为 5 而不是递增它。
  2. 您将其增加了一个太小的数字。即使修复了第一个错误,在第一个循环期间,您在 xPos -15 和 -10 处绘制条形图,然后将 xPos 增加到 -10 并在 xPos -10 和 -5 处绘制条形图(请参阅:您已经绘制了两次 -10已经)
于 2013-11-06T20:59:21.097 回答
1
(int i=0,j=0;i<barCount;j++)

看它。J++?不应该是:

for (int i=0;i<barCount;i++)
于 2013-11-06T20:46:27.363 回答
0

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

把你的代码放在一个方法中,而不是让一切都变成静态的。如果没有别的,请尝试 public void run() {}。在 main 中创建一个实例并调用 run。

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

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

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

于 2013-11-06T20:51:23.487 回答