はじめに
モンテカルロ法で円周率を求め、GUIで円を作り、座標をプロットしたいとコードを書き始めました。
コード内容
円周率を求めるclass , Windowを作成するclass , 描写をするclassを作りました。
描写をするclassでそれぞれ円や点を作るメソッドを作り、インスタンスから引数指定で描画できるようにしようと思っていました。
解決できない問題点
mainメソッドのDrawインスタンスのcircleメソッドを実行させると、
Exception in thread "main" java.lang.NullPointerException
とエラーが発生します。
お願いします
オブジェクト指向を勉強し始めて2日目と至らない点での質問かもしれませんが、解決策をご提案いただけるとありがたいです。
java
1package pie; 2 3import java.awt.Color; 4import java.awt.Graphics; 5 6import java.util.Random; 7 8import javax.swing.JFrame; 9import javax.swing.JPanel; 10 11class MontePi 12{ 13 double circleCount; 14 15 public double pi(int i, double randomX , double randomY) 16 { 17 if(1.0 >= randomX * randomX + randomY * randomY) 18 { 19 circleCount++; 20 } 21 return circleCount/i*4; 22 } 23} 24 25class Window extends JFrame 26{ 27 public Window(String title, int width, int height) 28 { 29 super(title); 30 setDefaultCloseOperation(EXIT_ON_CLOSE); 31 setSize(width,height); 32 setLocationRelativeTo(null); 33 setResizable(false); 34 } 35} 36 37class Draw extends JPanel 38{ 39 //circleメソッドに円の引数を渡して描写させたい。 40 public void circle(Graphics g ,int x, int y, int width, int height) 41 { 42 g.setColor(Color.GREEN); 43 g.drawOval(x ,y ,width , height); 44 } 45 46} 47 48class Pi 49{ 50 public static void main(String[] args) 51 { 52 Random rnd = new Random(); 53 MontePi mp = new MontePi(); 54 55 int randomCount = 100000; 56 double randomX , randomY , ans; 57 58 Window wd = new Window("Pi", 600 , 600); 59 wd.setVisible(true); 60 61 Draw draw = new Draw(); 62 draw.circle(/*引数*/); 63 64 for(int i= 0 ; i <= randomCount ; i++) 65 { 66 randomX = rnd.nextDouble(); 67 randomY = rnd.nextDouble(); 68 ans = mp.pi(i , randomX , randomY); 69 70 System.out.println(ans); 71 } 72 } 73} 74
回答1件
あなたの回答
tips
プレビュー