質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

2回答

3373閲覧

Processingで「NullPointerException」が表示されるエラーへの対処法

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2021/07/10 17:59

Processingで書いたコードを実行すると、以下の画像のようにNullPointerExceptionというエラーが出てしまい、困っています。
対処の方法や方向性などをアドバイスいただけないでしょうか。

発生している問題・エラーメッセージ

NullPointerException

エラー表示時に39行目に黄色マーカーが引かれます。

該当のソースコード

Processing

1import processing.sound.*; 2SoundFile BadMusic; 3 4int i;//i関数 5 6int scene = 0; //シーン用関数 7int loop = 0; //ループ用関数 1=ループ 8 9PImage [] sample = new PImage[2192]; 10 11PImage start_logo; 12 13void setup() { 14 size(480, 360); 15 frameRate(10); 16 background(0); 17 fill(255); 18 textSize(30); 19 textAlign(CENTER); 20 text("Now Loading...", 240, 180); 21 start_logo = loadImage("start_logo.png"); 22 for (i=1; i<sample.length; i++) { 23 sample[i-1] = loadImage("bad_images/"+i+".jpg"); 24 } 25 i=0; //i関数リセット 26 27 BadMusic = new SoundFile(this, "sample.mp3"); 28} 29 30void draw() { 31 if (scene == 0) { 32 start_scence(); 33 } else if (scene == 1) { 34 sample(); 35 } 36} 37 38void sample() { //再生部 39 image(sample[i], 0, 0); 40 println(i); 41 i++; 42 if (i==2192 && loop==0) { 43 BadMusic.stop(); 44 scene=0; 45 } else if (i==2192 && loop == 1) { 46 BadMusic.stop(); 47 BadMusic.play(); 48 } 49} 50 51void start_scence() { 52 image(start_logo, 0, 0); 53 if (key == CODED) { 54 } else if (keyCode == RIGHT) { 55 loop=1; 56 } else if (keyCode == LEFT) { 57 loop=0; 58 } 59 if (key == ENTER) { 60 scene=1; 61 BadMusic.play(); 62 } 63} 64

試したこと

sample部分を書き直したりしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

エラー表示時に39行目に黄色マーカーが引かれます。

ってことなら、そこんとこで実行止めてそこに出てくる変数の値を片っ端からチェックして、nullのものがないのか確かめてみよう

投稿2021/07/11 00:14

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

状況の観察として、起動後すぐにエラーになるのか、しばらくしてからなのかなんてのは結構重要な情報だと思うけれどどうなんでしょう。

試したことってのは「ボク頑張りました」を主張するためにあるんじゃなくて、「こう変更したら」「こういう結果が得られた」などというデータを蓄積・共有するためにあるんじゃないのかなぁ?

あと「関数」って何、「変数」って何、というのは確認しておいてください。間違ったことを覚えていると今後会話に支障をきたすかと思います。

で、39行目ってどこだ、とまず思うけど、image(sample[i], 0, 0);のところですか。sample[i]がnullになっているわけで、じゃあどうしてそうなるかというと
・sampleにデータを読み込んでいない
・setup()関数中でのloadImage()に失敗している
あたりがまず疑われるでしょう。読み込みのところで、

Processing

1 for (i=1; i<sample.length; i++) { 2 sample[i-1] = loadImage("bad_images/"+i+".jpg"); 3 print("/"+i); 4 if(sample[i-1]==null){ 5 println(); 6 println("Faild: bad_images/"+i+".jpg"); 7 } 8 }

とでもして、
・1~2192まで全部読んでいるか
・エラーはないか
を確認してみてはいかが。

投稿2021/07/10 22:04

thkana

総合スコア7629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問