java初心者です。
長方形を二つ作ってその長方形が重なりがあるのかどうかのコードを書きたいのですが、エラーが出てしまいます。エラー(例外)なく実行できるようにして、本来求める動きとは違う、うまく動いていない部分やバグを探したいのですが、どうすればいいでしょうか。
エラーコードは以下のものです
Exception in thread "main" java.lang.NullPointerException
at chukyu2.Rectangle.main(Rectangle.java:64)
java
1package chukyu2; 2 3class Rectangl { 4 final int INITIAL_WIDTH = 10; 5 final int INITIAL_HEIGHT = 20; 6 int width; 7 int height; 8 int lux; 9 int luy; 10 //コンストラクタ 11 Rectangl(){ 12 lux = 0; 13 luy = 0; 14 width = INITIAL_WIDTH; 15 height = INITIAL_HEIGHT; 16 } 17 Rectangl(int w,int h){ 18 lux = 0; 19 luy = 0; 20 width = w; 21 height = h; 22 } 23 Rectangl(int x,int y,int w,int h){ 24 lux = x; 25 luy = y; 26 width = w; 27 height = h; 28 } 29 //メソッド 30 void setLocation(int x,int y) { 31 lux = x; 32 luy = y; 33 } 34 void setSize(int w,int h) { 35 width = w; 36 height = h; 37 } 38 public String toString() { 39 return "[x = " + lux + ",y = " + luy + ",width = " + width + 40 ",height = " + height + "]"; 41 } 42 boolean intersect(Rectangl r) { 43 if(lux+width>this.lux||luy+height>luy) { 44 return false; 45 }else if(lux<this.lux&&this.lux<lux+width&&luy<this.luy&&this.luy<luy+height){ 46 Rectangl inte = new Rectangl(); 47 inte.setLocation(this.lux,this.luy); 48 inte.setSize(lux+width-this.lux, luy+height-this.luy); 49 return true; 50 }else if(lux<this.lux&&this.lux<lux+width&&this.luy<luy&&luy<this.luy+height) { 51 Rectangl inte = new Rectangl(); 52 inte.setLocation(this.lux,luy); 53 inte.setSize(lux+width-this.lux, this.luy+height-luy); 54 return true; 55 } 56 return false; 57 } 58} 59 60//メインメソッド 61public class Rectangle{ 62 public static void main(String[] args) { 63 Rectangl rt[] = new Rectangl[2]; 64 rt[0].setLocation(5, 10); 65 rt[0].setSize(20, 10); 66 rt[1].setLocation(20, 30); 67 rt[1].setSize(40, 30); 68 for(int i = 0;i<rt.length;i++) { 69 System.out.println(rt[i]); 70 } 71 if(rt[0].intersect(rt[1])){ 72 System.out.println(rt[1].lux + "," + rt[1].luy); 73 } 74 } 75} 76 77 78javaのソースコード
回答2件
あなたの回答
tips
プレビュー