Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

このエラーって・・・

/*************************************************
           kadai9G
*************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class kadai9G extends JFrame{
   
   /* getNum */
   public int getNum(){
      int num = (int)(Math.random() * 10.0);
      while(num > 5){
         num = (int)(Math.random() * 10.0);
      }
      return num;
   }
   
   /* game メソッド */
   public void game(){
      /* インスタンスの作成 */
      player per[] = new player[6];
      Color c[] = {Color.green,Color.blue,Color.yellow,Color.gray,Color.orange,Color.pink};
      /* ゲーム準備 */
      for(int i = 0;i < 6;i++){
         per[i] = new player(i + i, c[i]);
      }
      
      int beforeplayer = 9;
      int nowplayer;
      
      for(int i = 0; i < 10000; i++){
         nowplayer = getNum();
         if(nowplayer == beforeplayer + 1){
            per[nowplayer].loss();
         } else if(nowplayer == 0 && beforeplayer == 5){
            per[nowplayer].loss();
         } else {
            per[nowplayer].win();
         }
         beforeplayer = nowplayer;
      }
      Graphics g = getGraphics();
      for(int i = 0;i < 6; i++){
         per[i].showValue(50 + 30*i,250,20,g);
      }
      g.dispose();
   }

   public static void main(String[] args){
      kadai9G w = new kadai9G();
      w.game();
   }
}

/*************************************************
       player クラス
*************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class player {
   
   int count = 0;
   int name;
   Color color;
   
   /* コンストラクタ */
   public player(int mn,Color c){
      name = mn;
      color = c;
   }
   
   public void win(){
      count++;
   }
   
   public void loss(){
      count = count - 5;
   }
   
   /* 棒グラフ */
   public void showValue(int x,int y,int w,Graphics g){
      g.setColor(Color.black);
      g.drawString(" "+ name,x,y);
      if(count < 0){
         g.setColor(Color.red);
         count = -count;
      } else {
         g.setColor(color);
      }
      g.fillRect(x,y - 30 -count,w,count);
   }
}

これを実行すると、
Exception in thread "main" java.lang.NullP
        at player.showValue(player.java:32
        at kadai9G.game(kadai9G.java:47)
        at kadai9G.main(kadai9G.java:54)
と出てしまいます。。
何が間違っているのでしょうか?

1

回答

4371

閲覧

1件の回答

評価

0

課題を、エラーが出たからといって調べもせずに丸投げするのは、感心できませんね。

エラーは正確に書いてください。Null Pointer Exceptionでしょう。

>何が間違っているのでしょうか?
クラス変数がnullのまま、メソッドを使おうとしているということです。
player.javaの32行目から、確認していってください。
nullになっている変数を取得しているメソッドの、JavaDocを読めば、なぜnullなのか分かるでしょう。


それから、クラス名の頭は大文字にしましょう。これは決まりではないですが、指標としてそうなっています。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。