Java 如何在处理过程中为arraylist中的每个值创建块?

Java 如何在处理过程中为arraylist中的每个值创建块?,java,processing,Java,Processing,我想创建一个图形,其中为ArrayList中的每个值添加一个矩形。预期的最终结果是在水平方向上为ArrayList中的每个值生成一系列矩形 我尝试了以下代码,执行代码时出现了NullPointerException错误。有人能告诉我如何获得我期望的输出吗 import processing.core.*; public class Processing extends PApplet { ArrayList<Integer> test = new ArrayList<I

我想创建一个图形,其中为
ArrayList
中的每个值添加一个矩形。预期的最终结果是在水平方向上为
ArrayList
中的每个值生成一系列矩形

我尝试了以下代码,执行代码时出现了
NullPointerException
错误。有人能告诉我如何获得我期望的输出吗

import processing.core.*;
public class Processing extends PApplet {
    ArrayList<Integer> test = new ArrayList<Integer>();
    private PApplet parent;

    int x = 100;
    int y = 100;
    public void setup() {
          size(640, 600);
          background(255);
          test.add(10);
            test.add(20);
            test.add(30);
          noLoop();
        }

        public void draw() {
          for(int testing: test){
              printTask(x,y);
          }
        }

        public void printTask(int x, int y){
            parent.rect(10,10,x,y);
        }
        static public void main(String args[]) {
            PApplet.main(new String[] { "--bgcolor=#ECE9D8", "Processing" });
        }
}

父变量
未在任何地方初始化。当
处理
扩展
PApplet
时,您可以去掉
父变量
并更改
打印任务

public void printTask(int x, int y){
    rect(x, y, 10, 10);
}
您还需要更改draw以使用
列表中的值:

public void draw() {
    for(int testing: test){
        printTask(x + testing, y);
    }
}
试试这个:

import java.util.ArrayList;

import processing.core.PApplet;


public class Processing extends PApplet {
    ArrayList<Integer> test = new ArrayList<Integer>();

    int x = 100;
    int y = 100;

    public void setup() {
        size(640, 600);
        background(255);
        test.add(10);
        test.add(20);
        test.add(30);
        noLoop();
    }

    public void draw() {
        for (int testing : test) {
            printTask(x + testing, y);
        }
    }

    public void printTask(int x, int y) {
        rect(x, y, 10, 10);
    }

    static public void main(String args[]) {
        PApplet.main(new String[] { "--bgcolor=#ECE9D8", "Processing" });

}

如果您只是按原样传递x,那么所有的方块都将在相同的位置绘制,因为x不会改变。

如果以处理方式编写代码,代码的外观就是这样;-)由于您没有使用测试中存储的值,所以我将它们用于正方形大小。。。我还要说,方法应该以描述性的方式命名,比如“drawRects()”

[编辑]我编辑代码是为了更接近您的目标描述,我想…:)

ArrayList test=new ArrayList();
无效设置(){
规模(640600);
背景(255);
对于(int i=1;i<60;i++){
试验.增加(i*10);
}
noFill();
noLoop();
}
作废提款(){
for(int测试:test){
打印任务(测试、测试);
}
}
无效打印任务(整数x,整数y){
rect(x,10,10,y);
}

您是否正在初始化
父级
任意位置?@robarl我对使用处理是新手。我正在初始化父级,如代码中所示…
private PApplet parent
您的处理对象已经是PApplet,很可能您的意思是
rect(10,10,x,y)
而不是
parent.rect…
@robarl当我从parent.rect更改为rect时..我得到一个矩形作为输出..如何得到一系列我想要的矩形?等等,如果这是在处理IDE中,为什么要编写纯java而不是真正的处理?是的,我同意这部分答案。但是我似乎在逻辑中遗漏了一些东西,它只给了我一个矩形,而不是一系列的矩形。你能建议我缺少什么吗?@user2358330,请看我的编辑。您根本不使用放入
ArrayList
的值,只使用不会更改的
x
y
整数。
import java.util.ArrayList;

import processing.core.PApplet;


public class Processing extends PApplet {
    ArrayList<Integer> test = new ArrayList<Integer>();

    int x = 100;
    int y = 100;

    public void setup() {
        size(640, 600);
        background(255);
        test.add(10);
        test.add(20);
        test.add(30);
        noLoop();
    }

    public void draw() {
        for (int testing : test) {
            printTask(x + testing, y);
        }
    }

    public void printTask(int x, int y) {
        rect(x, y, 10, 10);
    }

    static public void main(String args[]) {
        PApplet.main(new String[] { "--bgcolor=#ECE9D8", "Processing" });

}
printTask(x + testing, y);
    ArrayList<Integer> test = new ArrayList<Integer>();

void setup() {
  size(640, 600);
  background(255);
  for (int i = 1; i< 60;i++){
    test.add(i*10);
  }
  noFill();
  noLoop();
}

void draw() {
  for (int testing: test) {
    printTask(testing,testing);
  }
}

void printTask(int x, int y) {
  rect(x, 10, 10, y);
}