1

したがって、NullPointerException をスローするコードの一部を以下に示します。

public class PuzzleGame extends GraphicsProgram implements KeyListener{
        private ArrayList <PuzzleImage> list = new ArrayList <PuzzleImage>();
        private PuzzleImage _11=null;

    public static void main(String[] args) {
            PuzzleGame game= new PuzzleGame();
            game.setup();  //NullPointerException here
            game.addKeyListener(game);
        }

     private void setup(){
            BufferedImage img11 = null;
            try {
                img11 = ImageIO.read(new File("C://part11.png"));
            } catch (IOException e) {
            }
            PuzzleImage _11=new PuzzleImage(img11,2,2,2,2);  //NullPointerException here
            list.add(_11);
    }
}

そして、ここにクラスPuzzleImageがあります

public class PuzzleImage extends GImage {
    public PuzzleImage(Image img, double x1, double y1, double realX, double realY) {
        super(img, x1, y1);  //NullPointerException here
        x=x1;
        y=y1;
    }
    private double x;
    private double y;
    private double realX;
    private double realY;
}

だから私はCにpart11.pngという名前のファイルがあることを確認したので、パスが正しいはずだと推測しています。正直なところ、このコードの何が問題なのかわかりませんが、私は Java に非常に慣れていないため、知らない、または見たことがないものがある可能性があります。たぶん、あなたの何人かは、何かを見つけることができるかどうか見てみることができますか?ありがとう。

解決済み: 追加する 12 枚の画像のうち、これは .png ではなく .jpg のみであることが判明しました。遅くなってしまいましたが、ご迷惑をおかけして申し訳ありません。

4

2 に答える 2

1

その割り当てを try catch ブロックで囲んでいるため、img11in でsetup()ある可能性が非常に高くなります。nullコードが IOException を受け取った場合、コードは壊れませんがimg11、値が割り当てられず、null のままになります。

エラーに関するメッセージを出力して、IO 例外が発生しているかどうかを確認してください。

したがって、コードを次のように変更してください...

private void setup(){
            BufferedImage img11 = null;
            try {
                img11 = ImageIO.read(new File("C://part11.png"));
            } catch (IOException e) {
                e.printStackTrace() //ADD THIS LINE
            }
            PuzzleImage _11=new PuzzleImage(img11,2,2,2,2);  //NullPointerException here
            list.add(_11);
    }

エラー メッセージが表示されている場合は、問題の可能性が非常に高いことがわかりますimg11

さらに、次の JDK API http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html#read(から ImageIO.read(FIle) メソッドを使用していると推測しています。java.io.File)、入力がnullの場合にエラーがスローされることを明確に示しています...

読んだ

public static BufferedImage read(ファイル入力) IOException をスローする

パラメータ: input - 読み取るファイル。戻り値: 入力のデコードされた内容を含む BufferedImage、または null。

スロー : IllegalArgumentException - 入力が null の場合。IOException - 読み取り中にエラーが発生した場合。

于 2013-03-03T07:50:40.203 に答える
0

PuzzleImage _11=new PuzzleImage(img11,2,2,2,2);

次のようにしてみてください:

_11=new PuzzleImage(img11,2,2,2,2);

通常、NullPointerExceptionはこのタイプでのみ発生します。

于 2013-03-03T08:06:48.033 に答える