Exception in thread "main" java.lang.NullPointerException

   更新日期:2024.06.02
异常:Exception in thread "main" java.lang.NullPointerException
at ColoredRectangle.paint(ColoredRectangle.java:34)
at SeeingDouble.main(SeeingDouble.java:26)

原因:在public void ColoredRectangle方法中传入的JFrame f的visible属性是false,所以在public void paint方法中得到的Graphics g = window.getGraphics()是null,所以会报空指针异常

解决:在传入之前设置display.setVisible(true);或在public void paint方法中作一下判断:
public void paint() {
if(!window.isVisible()) {
window.setVisible(true);
}
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
}

PS:虽然程序目的没达到,但是错误是找到了!

class Flight{
String name;
Seat[] seat=new Seat[25];
String state;
String flightline;
void initialise(){
for(int i=0;i<24;i++){
seat[i]=new Seat();
seat[i].p=new Passenger("",seat[24]);
}
for(int i=0;i<6;i++){
seat[i].No=(i+1)+"A";
}
for(int i=6;i<12;i++){
seat[i].No=(i-6+1)+"B";
}
for(int i=12;i<18;i++){
seat[i].No=(i-12+1)+"C";
}
for(int i=18;i<24;i++){
seat[i].No=(i-18+1)+"D";
}
}
public static void main(String[] args)throws IOException{
Flight a=new Flight();
a.name="Plane A";
Flight b=new Flight();
b.name="Plane B";
String seatNo1="";
String seatNo2="";
char plane;
a.initialise();
b.initialise();
这是我自己根据你给的写的~完全没有问题~希望能帮到你~
}

import java.io.*;
class aircraft
{
char planeNo;
String state;
String flight;
seat[] st=new seat[24];
Boolean Distime;
void initialise()
{
for(int i=0;i<24;i++){
st[i] = new seat();
}
for (int i=0;i<6;i++)
{
st[i].seatName="A"+i;
}
for (int j=6;j<12;j++)
{
st[j].seatName="B"+j;
}
for (int k=12;k<18;k++)
{
st[k].seatName="C"+k;
}
for (int l=18;l<24;l++)
{
st[l].seatName="D"+l;
}
}
}

class seat
{
String seatName;
String seatState;
String PGname;
String seatNo;
String pay;
String comName;
double discount;
}

import java.io.IOException;

public class bbbb{

public static void main(String[] arg) throws IOException
{
aircraft a[]=new aircraft[2];
for (int i=0;i<2;i++)
{
a[i]= new aircraft();
a[i].initialise();
}

}

}

请注意:数组的初始化,只是初始化了长度为xx的一个数组,但是未对数组的每个元素进行初始化,请参考如上代码,另外,凡是 java.lang.NullPointerException都是因为调用了null.XXXX引起的,调错时,可根据异常提示,定位到那一行,查看是由于那个对象是null了,这样就能很快的解决 java.lang.NullPointerException问题了。希望对你有帮助。

aircraft里只是初始了长度 应该在for循环里再初始化aircraft也就是在aircraft〔i〕=new aircraft()

你循环之后a[i]通过new 来都生成个新的,在调用initalise()方法。 对象没实例化,空指针异常。

相关链接

欢迎反馈与建议,请联系电邮
2024 © 视觉网