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

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

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

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

Q&A

解決済

2回答

1058閲覧

staticでない変数 thisをstaticコンテキストから参照することはできません

lizliz

総合スコア5

Java

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

0グッド

0クリップ

投稿2018/05/19 07:28

編集2018/05/19 11:51

前提・実現したいこと

四角形の大きさと円の半径を表示し、面積を出力したい。

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

My.java:41: エラー: staticでない変数 thisをstaticコンテキストから参照することはできません Rectangle r = new Rectangle(); ^ My.java:42: エラー: シンボルを見つけられません r.width = 10; ^ シンボル: 変数 width 場所: タイプMy.Rectangleの変数 r My.java:43: エラー: シンボルを見つけられません r.height = 20; ^ シンボル: 変数 height 場所: タイプMy.Rectangleの変数 r My.java:44: エラー: シンボルを見つけられません System.out.println("r.width = "+r.width); ^ シンボル: 変数 width 場所: タイプMy.Rectangleの変数 r My.java:45: エラー: シンボルを見つけられません System.out.println("r.hight ="+r.height); ^ シンボル: 変数 height 場所: タイプMy.Rectangleの変数 r My.java:48: エラー: staticでない変数 thisをstaticコンテキストから参照することはできません Circle c = new Circle(); ^ My.java:50: エラー: シンボルを見つけられません System.out.println("c.radius = " + c.radius); ^ シンボル: 変数 radius 場所: タイプMy.Circleの変数 c

該当のソースコード

java

1public class My{ 2 3 int radius; 4 int width; 5 int height; 6 7 public class Rectangle{ 8 9 Rectangle(int w, int h){ 10 setSize(w,h); 11 } 12 13 void setSize(int w, int h) { 14 width = w; 15 height = h; 16 } 17 18 int getArea() { 19 return width * height; 20 } 21 } 22 23 public class Circle{ 24 25 Circle(int r){ 26 setRadius(r); 27 } 28 29 void setRadius(int r){ 30 radius = r; 31 } 32 double getCiArea(){ 33 return 3.14 * radius * radius; 34 35 } 36 } 37 38 public static void main(String[] args){ 39 Rectangle r = new Rectangle(); 40 r.width = 10; 41 r.height = 20; 42 System.out.println("r.width = "+r.width); 43 System.out.println("r.hight ="+r.height); 44 System.out.println("r.getArea = "+r.getArea()); 45 46 Circle c = new Circle(); 47 c.setRadius(10); 48 System.out.println("c.radius = " + c.radius); 49 System.out.println("c.getArea() = " + c.getCiArea()); 50 } 51}

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

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

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

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

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

m.ts10806

2018/05/19 09:20

質問テンプレート部分の文言が多く残っています。本件と関係のない部分は除去してください。回答する上でのノイズとなります。
m.ts10806

2018/05/19 11:46

LouiS0616さんが回答で指摘されているコード部分についてもコードを見やすくしたり、回答者の再現確認の手助けとなるものなので、お手数ですが調整願います。
guest

回答2

0

Rectangleを内部クラスにしているからですね。
解決法はいくつかありますが、素直にRectangle.javaを作ってそちらに移行するのが良いかと。
Circleクラスも同様です。

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
Java

投稿2018/05/19 07:33

編集2018/05/19 07:34
LouiS0616

総合スコア35660

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

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

0

ベストアンサー

問題の趣旨とは異なるかもしれませんが、以下のコードで長方形、円の面積を算出することができます。

Java

1public class Main{ 2 public static void main(String[] args){ 3 Rectangle r = new Rectangle(10,20); 4 Circle c = new Circle(5); 5 r.print_result(); 6 c.print_result(); 7 } 8 9} 10 11class Rectangle{ 12 private int Width; 13 private int Height; 14 15 public Rectangle(int width, int height){ 16 Width = width; 17 Height = height; 18 } 19 public void print_result(){ 20 int area = Width * Height; 21 System.out.println("width = " + Width); 22 System.out.println("height = " + Height); 23 System.out.println("area = " + area); 24 } 25} 26 27class Circle{ 28 private int Radius; 29 30 public Circle(int radius){ 31 Radius = radius; 32 } 33 public void print_result(){ 34 double area = Radius * Radius * Math.PI; 35 System.out.println("radius = " + Radius); 36 System.out.println("area = " + area); 37 } 38}

投稿2018/05/19 08:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問