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

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

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

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

Q&A

解決済

3回答

833閲覧

どこにカウンタの変数を入れ、その後にどうやって表示させるかがわからない

C.table

総合スコア1

Java

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

0グッド

0クリップ

投稿2021/05/28 13:32

前提・実現したいこと

ランダムに表示させた文の後に何回目に表示されているかをCount変数を使って表示させたいです。

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

どこにカウンタの変数を入れ、その後にどうやって表示させるかがわからない

該当のソースコード

Java

1import java.util.Random; 2 3public class Shapes { 4 public static void main(String[] args) { 5 6 7 Triangle t1 = new Triangle(); 8 Triangle t2 = new Triangle(20,30); 9 System.out.println(t1.toString()); 10 System.out.println(t2.toString()); 11 12 Circle c1 = new Circle(); 13 Circle c2 = new Circle(20,0); 14 System.out.println(c1.toString()); 15 System.out.println(c2.toString()); 16 17 18 19 int n= 4; 20 Shape [] shapes = new Shape [n]; 21 22 Shape f1; 23 f1=c1; 24 for (int i=0; i<n; i++) { 25 26 27 Random rand = new Random(); 28 int x=rand.nextInt(2)+1; int y=rand.nextInt(2)+1; 29 30 31 if(x%2==0&&y%2==0) { 32 f1=t1; 33 34 35 }else if(x%2==0&&y%2!=0){ 36 f1 = t2; 37 38 }else if(x%2!=0&&y%2==0){ 39 f1 = c1; 40 41 }else if(x%2!=0&&y%2!=0){ 42 f1=c2; 43 } 44 shapes[i] = f1; 45 } 46 for (int i1=0; i1<n; i1++) { 47 System.out.println(shapes[i1].toString()); 48 49 } 50 } 51 } 52 53public class Triangle extends Shape { 54 private double width; 55 private double height; 56 // コンストラクタ 57 Triangle() { 58 this.width = 20; 59 this.height = 10; 60 super.id = "Triangle"; 61 } 62 Triangle(double w, double h) { 63 this(); 64 this.setSize(w, h); 65 } 66 // アクセスメソッド 67 void setWidth(double w) { 68 width = w; 69 } 70 void setHeight(double h) { 71 height = h; 72 } 73 void setSize(double w, double h) { 74 setWidth(w); 75 setHeight(h); 76 } 77 double getWidth() { 78 return this.width; 79 } 80 double getHeight() { 81 return this.height; 82 } 83 @Override 84 double getArea() { 85 return (area = (width * height)/2); 86 } 87} 88 89public class Circle extends Shape{ 90 private double width; 91 private double height; 92 // コンストラクタ 93 Circle() { 94 this.width = 20; 95 this.height = 10; 96 super.id = "Circle"; 97 } 98 Circle(double w, double h) { 99 this(); 100 this.setSize(w, h); 101 } 102 // アクセスメソッド 103 void setWidth(double w) { 104 width = w; 105 } 106 void setHeight(double h) { 107 height = h; 108 } 109 void setSize(double w, double h) { 110 setWidth(w); 111 setHeight(h); 112 } 113 double getWidth() { 114 return this.width; 115 } 116 double getHeight() { 117 return this.height; 118 } 119 @Override 120 double getArea() { 121 return (area = width * width*3.14); 122 } 123} 124 125public abstract class Shape { 126 protected double area; 127 String id = ""; 128 abstract double getArea(); 129 @Override // toString() とは,オブジェクトを文字列にするメソッドとして存在する 130 public String toString() { 131 double a = getArea(); 132 String s = new java.text.DecimalFormat("0.0").format(a); 133 return ( id +". "+s ); 134 } 135} 136 137public class Counter { 138 private int count = 0; 139 // コンストラクタ 140 public void reset(){ 141 count = 0; 142 } 143 // カウント 144 public void count(){ 145 count++; 146 } 147 // 値の取得 148 public int getCount(){ 149 return count; 150 } 151}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

例えば
Triangle.300.0.1番目に表示されました
Triangle.300.0.2番目に表示されました
Circle.1256.0.3番目に表示されました
Circle.1256.0.4番目に表示されました
のように表示させたいです

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

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

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

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

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

guest

回答3

0

Counter counter = new Counter();
for (int i1=0; i1<n; i1++) {
counter.count();
System.out.printf("%s%d番目に表示されました\n",shapes[i1].toString(), counter.getCount());

投稿2021/05/29 09:47

C.table

総合スコア1

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

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

0

ベストアンサー

何のためにクラスを使いたいのか良く分かりませんが、こうでしょうか?

java

1 Counter counter = new Counter(); 2 for (int i1 = 0; i1 < n; i1++) { 3 counter.count(); 4 System.out.printf("%s.%d番目に表示されました\n", shapes[i1].toString(), counter.getCount()); 5 }

投稿2021/05/29 00:07

yh1224

総合スコア653

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

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

C.table

2021/05/29 09:46

ありがとうございます。 解決しました。 クラスの理解が深まりました。
guest

0

java

1 for (int i1 = 0; i1 < n; i1++) { 2 System.out.println(shapes[i1].toString()); 3 }

ここで表示した順番を表示したいということでしょうか?
i1 + 1 を表示すれば良いだけかと思います。

変数の値を表示するには System.out.printf() を使います。

java

1System.out.printf("%s%d番目に表示されました\n", shapes[i1].toString(), i1 + 1);

投稿2021/05/28 16:59

yh1224

総合スコア653

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

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

C.table

2021/05/28 18:24

回答ありがとうございます。 最後のクラスのcountを使って表示させたいのです。 方法はありますか?
yh1224

2021/05/29 00:01

何のためのクラスなのか良くわかりませんが、こういうことでしょうか? ```java Counter counter = new Counter(); for (int i1 = 0; i1 < n; i1++) { counter.count(); System.out.printf("%s.%d番目に表示されました\n", shapes[i1].toString(), counter.getCount()); } ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問