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

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

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

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

解決済

インスタンスに格納した図形の情報を別のインスタンスにランダムに入れ直して実行する方法

shimajiro1917
shimajiro1917

総合スコア4

Java

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

2回答

1評価

0クリップ

910閲覧

投稿2021/01/06 06:46

編集2021/01/06 12:51

#いくつかの図形の面積を求めるサブクラスを作り、別のクラスに入れてランダムに面積を表示するプログラムを作りたいです。

実行したいコードは以下の通りです

java

```java package object; import java.util.Arrays; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; public class Figures{ public static void main(String[] args) { Figure[] figures1 = new Figure[9]; Figure[] figures2 = figures1.clone(); Rectangle r1 = new Rectangle(); Rectangle r2 = new Rectangle(30, 20); int i = 0; figures1[i++] = r1; figures1[i++] = r2; System.out.println("The area of r1 is" + r1.getArea()); System.out.println("The area of r2 is" + r2.getArea()); Circle1 c1 = new Circle1(); Circle1 c2 = new Circle1(25); figures1[i++] = c1; figures1[i++] = c2; System.out.println("The area of c1 is" + c1.getArea()); System.out.println("The area of c2 is" + c2.getArea()); Triangle t1 = new Triangle(); Triangle t2 = new Triangle(30, 20); Triangle t3 = new Triangle(300, 200); System.out.println("The area of t1 is" + t1.getArea()); System.out.println("The area of t2 is" + t2.getArea()); System.out.println("The area of t3 is" + t3.getArea()); figures1[i++] = t1; figures1[i++] = t2; figures1[i++] = t3; Square2 s1 = new Square2(); Square2 s2 = new Square2(20); System.out.println("The area of s1 is " + s1.getArea()); System.out.println("The area of s2 is " + s2.getArea()); figures1[i++] = s1; figures1[i++] = s2; } public static void shuffle(int[] figures1) { Random rnd = ThreadLocalRandom.current(); for (int k = figures1.length - 1; k > 0; k--) { int index = rnd.nextInt(k + 1); // 要素入れ替え(swap) int tmp = figures1[index]; figures1[index] = figures1[k]; figures1[k] = tmp; } for(int k=0; k<figures1.length;k++) { System.out.println(figures1[k].getName()+":"+figures1[k].getArea()); } } }

ここの

java

for(int k=0; k<figures1.length;k++) { System.out.println(figures1[k].getName()+":"+figures1[k].getArea()); }

という部分が

「この行に複数マーカーがあります

  • getName() を基本タイプ int で起動できません
  • getArea() を基本タイプ int で起動できません」

というエラーコードを出してうまく動きません。
既出の質問を参考にさせてもらっています。
図形配列をシャッフルして別の配列に格納する方法

##各図形のコード

java

package object; import java.util.concurrent.atomic.AtomicInteger; public class Rectangle extends Figure { private double height = 0; private double width = 0; static final String NAME = Rectangle.class.getSimpleName(); static final java.util.concurrent.atomic.AtomicInteger counter = new AtomicInteger(0); String name = "Rectangle"; Rectangle(){ this.width = 20; this.height = 10; } Rectangle(double w, double h){ this.width = w; this.height = h; } void setWidth(double w) { this.width = w; } void setHeight(double h) { this.height = h; } void setSize(double w, double h) { setWidth(w); setHeight(h); } double getWidth() { return this.width; } double getHeight() { return this.height; } Rectangle(int width, int height){ super(NAME + counter.addAndGet(1)); this.width = width; this.height = height; } @Override double getArea() { return width * height; } void identify() { System.out.println("I am a rectangle with area" + getArea() + "."); } }

###スーパークラス

java

package object; public abstract class Figure { final String name; public Figure(){ this.name = ""; } public Figure(String name) { this.name = name; } abstract double getArea(); @Override public String toString() { return name + ":" + String.format("%.1f", getArea()); } public void identify() { // TODO 自動生成されたメソッド・スタブ } }

どこで間違えているかわかるかたがいらっしゃいましたら教えていただきたいです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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