【问题标题】:Java rectangle 90 array null pointer [duplicate]Java矩形90数组空指针[重复]
【发布时间】:2017-02-25 23:04:45
【问题描述】:

我无法弄清楚这个...所以我不断在线程中收到异常

AWT-EventQueue-0" java.lang.NullPointerException
  at MakeFrame.MovementAndObjects.paint(MovementAndObjects.java:285) 

我的代码中有错误,但我找不到 nullPointer!我的矩形 []latter 数组是公共的,我只是想传递数组简单的对象,我无法从中引用。

void defineObjects(){
       character = new Player("Zander", true, 10, 1, 1, 1, 1, "none", "none");
       charRect = new Rectangle(character.charX, character.charY,character.charWidth,character.charHeight);//y==about 500, x= whatever the x is currently set at
       floor1 = new Rectangle(-1, 660, 1201, 10);
       floor2 = new Rectangle (-1, 550, 1201, 10);
       floor3 = new Rectangle(-1, 440, 1201, 10);
       floor4 = new Rectangle (-1, 330, 1201, 10);
       floor5 = new Rectangle(-1, 220, 1201, 10);
       floor6 = new Rectangle (-1, 110, 1201, 10);
       wallA = new Rectangle(0,660,-700,12);
       wallB = new Rectangle(1182,660,-700,12);
       latter[0]=new Rectangle(1120,560,35,101);
       latter[1]= new Rectangle(100,450,35,101);
       latter[2]=new Rectangle(400,340,35,101);
       latter[3]= new Rectangle(20,340,35,101);
       latter[4]=new Rectangle(800,230,35,101);
       latter[5]= new Rectangle(100,230,35,101);
       latter[6]=new Rectangle(600,450,35,101);
       latter[7]= new Rectangle(500,120,35,101);
       latter[8]=new Rectangle(700,120,35,101);
       objectDefine=true;

       repaint();
}




@Override
 public void paint(Graphics g)
{
    super.paint(g);
    if(objectDefine)
    {  

        /*==========
        =THE FLOORS=
        ==========*/
       latter[0]=latter1;
       g.setColor(myBarf);//floor
       g.setColor(myBrown);//floor
       g.fillRect(floor1.x, floor1.y, floor1.width, floor1.height);
       g.fillRect(floor2.x, floor2.y, floor2.width, floor2.height);
       g.fillRect(floor3.x, floor3.y, floor3.width, floor3.height);
       g.fillRect(floor4.x, floor4.y, floor4.width, floor4.height);
       g.fillRect(floor5.x, floor5.y, floor5.width, floor5.height);
       g.fillRect(floor6.x, floor6.y, floor6.width, floor6.height);
        /*==========
        =THE  WALLS=
        ==========*/
       g.setColor(Color.red);
       g.fillRect(wallA.x,wallA.y,wallA.height,wallA.width);
       g.fillRect(wallB.x,wallB.y,wallB.height,wallB.width);
        /*===========
        =THE lATTERS=
        ===========*/
        for(int i=0; i<=latter.length; i++)
        {
            g.setColor(myBrown3);
            g.fillRect(latter[i].x, latter[i].y, latter[i].width, latter[i].height);<---- this is the bad line of code according the the error message
            g.setColor(Color.BLACK);
            System.out.println("D1 complete!!!");
            for(int j=5; j<=80; j+=15)
            {
                g.fillRect(latter[i].x+9 ,latter[i].y+j, latter[i].width/2, latter[i].height/10);
            }
        }

有什么想法吗? 我已经以几种不同的方式对其进行了初始化,这是我尝试过的当前方式:

public Rectangle[] latter= {
  new Rectangle(1120,560,35,101), 
  new Rectangle(100,450,35,101), 
  new Rectangle(400,340,35,101),
  new Rectangle(20,340,35,101), 
  new Rectangle(800,230,35,101), 
  new Rectangle(100,230,35,101), 
  new Rectangle(600,450,35,101), 
  new Rectangle(100,230,35,101), 
  new Rectangle(700,120,35,101)
};

iv 也做了标准的 rectangle[] later=new Rectangle[8];分配的后者

【问题讨论】:

  • latter1 怎么样?可以为空吗?
  • 所有后者,0-8,都是矩形。我可以在数组之外调用它们,但不能通过引用数组的索引
  • 可以发一下数组的初始化latter吗?
  • for 中的 i&lt;=latter.length 似乎不正确,应该是 i &lt; latter.length(请记住,如果长度为 9,那么您可以访问的元素是从 0 到 8)。但这应该会导致IndexOutOfBoundsException 而不是NullPointerException
  • 我修改了那个代码,现在它可以工作了!谢谢你!但我程序的其他部分现在正在获取 arrayIndexOutOfBoundsExceptions。无论如何,谢谢你的帮助 Loris!

标签: java arrays arraylist nullpointerexception awt-eventqueue


【解决方案1】:

for 中的i&lt;=latter.length 似乎不正确,应该是i &lt; latter.length(请记住,如果长度是9,那么您可以访问的元素是从08)。但这应该会导致IndexOutOfBoundsException 而不是NullPointerException

注意数组维度,latter 的正确初始化,例如应该是Rectangle[] latter = new Rectangle[9];,所以9 而不是你发布的8

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 2019-04-07
    • 2011-12-21
    • 2023-03-15
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多