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);
}