Java 字符串变量出现NullPointException错误(初学者)
我试图模仿这里看到的一个类似的代码,但我似乎有点混淆了代码。我试图得到这些字母的效果,基本上就是画这幅画的后期图像。但是我得到了一个NullPointException,并假设它与我初始化字符串变量的方式有关,但我似乎找不到我做错了什么 错误Java 字符串变量出现NullPointException错误(初学者),java,variables,processing,Java,Variables,Processing,我试图模仿这里看到的一个类似的代码,但我似乎有点混淆了代码。我试图得到这些字母的效果,基本上就是画这幅画的后期图像。但是我得到了一个NullPointException,并假设它与我初始化字符串变量的方式有关,但我似乎找不到我做错了什么 错误 Exception in thread "Animation Thread" java.lang.NullPointerException at processing.opengl.PGL.getString(PGL.java:1029)
Exception in thread "Animation Thread" java.lang.NullPointerException
at processing.opengl.PGL.getString(PGL.java:1029)
at processing.opengl.PGraphicsOpenGL.getGLParameters(PGraphicsOpenGL.java:6076)
at processing.opengl.PGraphicsOpenGL.beginDraw(PGraphicsOpenGL.java:1547)
at MLKpractice.letterfit(MLKpractice.java:147)
at MLKpractice.draw(MLKpractice.java:98)
at processing.core.PApplet.handleDraw(PApplet.java:2120)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:197)
at processing.core.PApplet.run(PApplet.java:1998)
at java.lang.Thread.run(Thread.java:680)
程序说错误在第127行
lettersquare.beginDraw();
但我相信错误就在上面
PFont font;
String fontpath = "ArialMT-200.vlw";
int fontstart = 300;
int fontend = 8;
float fontsize = fontstart;
float fontsizedecrease = 0.97;
PImage bg;
PImage australia;
PImage austria;
String country1 = "australia.jpg";
String country2 = "austria.jpg";
String letters = "Australia";
char[] chars = new char[52];
int nchars = 0;
int iterations = 500;
int c = 0;
PGraphics letter,lettersquare,drawing;
void setup(){
//initialize the sketch
size(900,600);
//background(255);
//initialize the font
//font = loadFont(fontpath);
///*
for(int i=0;i<letters.length();i++){
boolean found = false;
char lc = letters.charAt(i);
for(int j=0;j<nchars;j++){
if(chars[j]==lc){
found = true;
break;
}
}
if(!found) chars[nchars++] = lc;
}
chars = (char[]) subset(chars,0,nchars);
font = createFont("Arial",200,true,chars);
//*/
textAlign(CENTER,CENTER);
//load the image that will be filled with letters
australia = loadImage(country1);
austria = loadImage(country2);
bg = loadImage("background.jpg");
//posterize the image
australia.filter(THRESHOLD,0.4);
australia.filter(BLUR,3);
australia.filter(THRESHOLD,0.6);
//initialize the drawing buffers
letter = createGraphics((int)fontsize,(int)fontsize,JAVA2D);
lettersquare = createGraphics((int)fontsize,(int)fontsize,P2D);
drawing = createGraphics(width,height,JAVA2D);
drawing.beginDraw();
drawing.background(255);
// THIS STUPID THING NEEDS TO GO HERE!!!!
drawing.image(bg,0,0);
drawing.endDraw();
}
void draw(){
if(floor(fontsize)>fontend&&c<letters.length()-1){
if(!letterfit()){
fontsize *= fontsizedecrease;
}else{
c++;
if(c==11){
fontsize *= 0.75;
}
}
tint(255);
image(drawing,0,0);
if (keyCode == LEFT) {
image(austria,0,0);
}
// if (keyCode == RIGHT) {
// frog1.frogx = frog1.frogx + 1;
// }
if(mousePressed){
tint(255,100);
image(australia,0,0);
}
}else{
tint(255);
image(drawing,0,0);
println(c+" "+letters.length());
/*
save("mlk-"+hour()+""+minute()+""+second()+".tif");
exit();
*/
noLoop();
}
}
boolean letterfit(){
letter.beginDraw();
letter.background(255,0);
letter.fill(0);
letter.textAlign(CENTER,CENTER);
letter.translate(fontsize/2,fontsize/2);
letter.rotate(random(TWO_PI));
letter.scale(fontsize/fontstart);
letter.textFont(font);
letter.smooth();
letter.text(letters.charAt(c),0,0);
letter.endDraw();
lettersquare.beginDraw();
PFont字体;
字符串fontpath=“ArialMT-200.vlw”;
int fontstart=300;
int-fontend=8;
float fontsize=fontstart;
float-fontsizedecrease=0.97;
皮马杰bg;
PImage澳大利亚;
PImage奥地利;
字符串country1=“australia.jpg”;
字符串country2=“austria.jpg”;
字符串字母=“澳大利亚”;
char[]chars=新字符[52];
int-nchars=0;
int迭代次数=500;
int c=0;
印刷字体、方形字体、图纸;
无效设置(){
//初始化草图
规模(900600);
//背景(255);
//初始化字体
//font=loadFont(fontpath);
///*
对于(inti=0;i您最有可能遇到的问题是,如果主渲染器是Java2D,则无法使用OpenGL PGraphics渲染器
该链接有一个变通方法,主要涉及将主渲染器更改为OpenGL
更新版本的PGraphics应该会给您一个更详细的例外情况。在调用letterfit()之前您是否调用了setup()?@JoachimIsaksson是的,我不会调用letter fit,直到稍后我会在letterfit()的开头打印出letter的值。它可能是0。不知怎的!@ChristineAustin试图打印图形的返回值。这很奇怪,在某一点上,我可以从我引用的站点获取整个代码,并且代码工作正常,但现在如果我尝试这样做,我会得到错误…啊,我现在明白了,这都是因为处理2.0b1吗?我只是担心c因为我用它做作业,学校的电脑运行在我原来的代码工作的旧版本上。@ChristineAustin据我所知,它只与2.x版本相关,1.x应该可以工作。好的,谢谢你的帮助!我想我会播放它保存并在1.x版本上运行它,因为代码在那里工作。我会我自己从来没有注意到过!天才:]