2011-10-03 8 views
1

私はゲームを作っていて、それは私が変数を意味すると信じているNullPointerExceptionを与えているか、あるいは私がしようとしていることは値を返さないということですか?フルエラー出力は以下の通りですJavaコード - NullPointerException

 setX(r.nextInt(640)); 

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at OurGame.Coin.move(Coin.java:46) 
    at OurGame.Coin.actionPerformed(Coin.java:40) 
    at javax.swing.Timer.fireActionPerformed(Unknown Source) 
    at javax.swing.Timer$DoPostEvent.run(Unknown Source) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

私はこのために何らかの理由を参照してくださいいけないエラーがここで起こっている

package OurGame; 

import java.awt.Image; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Random; 

import javax.swing.ImageIcon; 
import javax.swing.JPanel; 
import javax.swing.Timer; 

public class Coin extends JPanel implements ActionListener { 
/** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

Image img; 

int x,y; 
Timer t; 
Random r; 

     public Coin() { 
      x = 50; 
      y = 50; 

      System.out.println("New coin created: " + x + ", " +y); 

      ImageIcon i = new ImageIcon("C:/coin.png"); 
      img = i.getImage(); 
      System.out.println(i); 

      t = new Timer(3000,this); 
      t.start(); 
     } 

     @Override 
     public void actionPerformed(ActionEvent arg0) { 
      move(); 

     } 

     public void move() { 

      setX(r.nextInt(640)); 
      setY(r.nextInt(480)); 


     } 

     public void setX(int xs) { 
      x = xs; 
     } 

     public void setY(int ys) { 
      y = ys; 
     } 
     public Image getImage(){ 
      return img; 
     } 

     public int getX(){ 
      return x; 
     } 

     public int getY() { 
      return y; 
     } 


} 

:私は以下のコードを使用しています起こるかもしれないが、おそらくあなたが助けることができる。

ありがとうございました。

答えて

4

変数rを初期化する必要があります。例えば、java.util.Randomのコンストラクタをチェックアウト:

Random r = new Random(); 
+0

Ahh ... whoops ^^ Beginner mistake right there、ありがとう。 –

6

は、r = new ...といっしょに使われています。

2

rはnullです。最初に初期化してください。これをコンストラクタに入れてください:

r = new Random(); 
関連する問題