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

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

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

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

Q&A

解決済

2回答

1131閲覧

実行して違うところを探したいがエラーが出てしまうので解決方法を教えてください

eak_a

総合スコア2

Java

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

0グッド

0クリップ

投稿2021/10/07 04:06

編集2021/10/07 06:21

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のソースコード

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

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

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

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

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

dodox86

2021/10/07 05:31

> 実行して違うところを探したいが ... > 一度実行してうまくいっていないところを探したいのですが、 文の繋がりが意味不明です。エラー(例外)なく実行できるようにして、本来求める動きとは違う、うまく動いていない部分やバグを探したいと言う意味ですか?
eak_a

2021/10/07 06:19

dodox86さん そういう意味です。つたない文章で申し訳ないです。
jimbe

2021/10/09 13:16

実行しなくても、まず intersect メソッド内でパラメータ r を使ってないように見ますけど…。
guest

回答2

0

自己解決

java

1 Rectangl rt[] = new Rectangl[2]; 2javaのソースコード

Java

1int n = 2; 2 Rectangle rt[] = new Rectangle[n]; 3 for(int i = 0;i<n;i++) { 4 rt[i] = new Rectangle(); 5 } 6Javaのソースコード 7```のようにしたらエラーが出なくなりました。

投稿2021/10/07 08:50

eak_a

総合スコア2

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

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

dodox86

2021/10/07 08:58

エラーが出なくなるようにコードを書くのではなく、ちゃんと意味を理解して主体的に正しくコードを書けばエラーは無くなるのです。先にいただいている回答の意味は理解されていますか?
eak_a

2021/10/09 03:46

はじめのコードでは2つの配列を作っただけで、rt[0]、rt[1]という名前がついていない状態。 その状態でデータを入力しようとしたから、存在しない配列にデータを入力していることになり、中身がnullとなった、という風に理解したのですがだいたいあっているでしょうか。
guest

0

java

1Rectangl rt[] = new Rectangl[2];

これでは配列の入れ物が作られるだけで、中身はnullです。

投稿2021/10/07 04:11

maisumakun

総合スコア146018

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

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

eak_a

2021/10/07 04:38 編集

rt[0].setLocation(5, 10); rt[0].setSize(20, 10); rt[1].setLocation(20, 30); rt[1].setSize(40, 30); ここの部分で中身を定義できていないでしょうか
maisumakun

2021/10/07 09:16

> ここの部分で中身を定義できていないでしょうか 逆です。中身を入れてからでないとrt[0].setLocation(5, 10);のような呼び出しはできません。
eak_a

2021/10/09 03:47

rt[0],rt[1]を作れていない状態で中身を入れようとしていたので、エラーが出ていたのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問