【发布时间】:2014-12-02 03:40:26
【问题描述】:
-问题- 所以我试图制作一个正在处理的程序(我正在使用java运行,所以它基于java)。 该程序制作了一个由 3 维点组成的网格并对其进行处理。现在它在上面画小圆圈来验证它的工作原理。我正在调试以找出为什么所有的圆圈都没有绘制,并且我以某种方式创建了一个我无法摆脱的错误。无论我做什么,第 43 行总是出现 nullpointerexception 错误。我尝试制作一个新的脚本文件并将代码复制+粘贴到那里,重新启动处理 IDE 等,但似乎没有任何解决方法。我可以在上面或下面添加语句来操纵哪一行是 43 但它不会改变错误..这里有熟悉处理的人可以帮助我吗?我不知道如何将错误消息解释为“查看第 43 行是否有被称为 null 的内容”,这就是我感到困惑的原因。
-代码-
int sizex = 20;
int sizey = 20;
int framewidth = 800;
int frameheight = 800;
int[][] points = new int[(framewidth/sizex+1)*(frameheight/sizey+1)][];
void setup(){
noLoop();
background(255);
size(framewidth,frameheight,P3D);
ellipseMode(CENTER);
for(int x = 0; x<=framewidth/sizex; x++){
for(int y = 0; y<=frameheight/sizey; y++){
int[] point = {x*sizex,y*sizey,0};
//print("\nx:"+x+" y:"+y+" place:"+place);
points[x*(framewidth/sizex)+y] = point;
//place++;
}
}
}
void draw(){
int sinstep = 0;
for(int count = 0; count < points.length; count++){
int[] temp = points[count];
temp[2]=(int)(100*Math.sin(sinstep/100));
points[count] = temp;
}
sinstep++;
for(int x = 0; x<=framewidth/sizex; x++){
for(int y = 0; y<=frameheight/sizey; y++){
//print(x+", "+y);
int[] p = {1,2,3};
find(x,y);
ellipse(p[0],p[1],10,10);
}
}
}
void find(int x, int y){
print("yourmom");
//This is where the error is //int[] temp = points[(x-1)*(framewidth/sizex)+y
int[] z = {x,y,x+y};
}
-错误信息-
java.lang.RuntimeException: java.lang.NullPointerException
at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
at javax.media.opengl.Threading.invoke(Threading.java:191)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
at processing.opengl.PJOGL.requestDraw(PJOGL.java:688)
at processing.opengl.PGraphicsOpenGL.requestDraw(PGraphicsOpenGL.java:1651)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at *triangles.draw(triangles.java:43)*
at processing.core.PApplet.handleDraw(PApplet.java:2386)
at processing.opengl.PJOGL$PGLListener.display(PJOGL.java:862)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1289)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
at javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1300)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:302)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
【问题讨论】:
-
第 43 行是哪一行?
-
这可能是
points数组未正确初始化。代码int[][] points = new int[(framewidth/sizex+1)*(frameheight/sizey+1)][];未初始化第二维。 -
你的 draw() 函数是一团糟。为什么要使用 2D 数组而不是创建 Point 类或类似的东西?
-
@Eizooz,你可以在你的 draw 函数中打印 temp.length,在你分配它之后吗?很确定这就是您的错误所在,但如果不查看整个代码,我就无法判断。
-
43 由注释标记 //这是错误所在,但它在另一个注释的行上,因此令人困惑。尽管就像我解释的那样,该行不会更改或遵循任何代码。我使用二维数组,因为我无法找到支持维度的点类,而且我还不知道如何制作自己的。这是我的全部代码。
标签: java nullpointerexception null processing