新・明解 Java 入門 演習 13-2 解答
Hello, Terminal!swaponQです!
今回は演習 13-2 に取り組んでいこうと思います。
- 演習 13-2
図形クラス群に対して、直角二等辺三角形を表すクラス群を追加せよ。左下が直角のもの、右下が直角のもの、右上が直角のもの追加すること。直角二等辺三角形を表す抽象クラスを作り、そこから個々のクラスを派生して作ること。
・LTopRightTriangle.java
//左上直角二等辺三角形クラス public class LTopRightTriangle extends RightTriangle { public LTopRightTriangle(int length) { super(length); } public String toString() { return "LTopRightTriangle(length:" + getLength() + ")"; } public void draw(){ for (int i = 0; i < getLength(); i++) { for (int j = (getLength() - i); j > 0; j--) { System.out.print('*'); } System.out.println(); } } }
・RBottomRightTriangle.java
//右下直角二等辺三角形クラス public class RBottomRightTriangle extends RightTriangle { public RBottomRightTriangle(int length) { super(length); } public String toString() { return "RBottomRightTriangle(length:" + getLength() + ")"; } public void draw(){ for (int i = getLength(); i > 0; i--) { for (int j = i; j - 1 > 0; j--) { System.out.print(' '); } for (int k = 0; k <= (getLength() - i); k++) { System.out.print('*'); } System.out.println(); } } }
・RTopRightTriangle.java
//右上直角二等辺三角形クラス public class RTopRightTriangle extends RightTriangle { public RTopRightTriangle(int length) { super(length); } public String toString() { return "RTopRightTriangle(length:" + getLength() + ")"; } public void draw() { for (int i = getLength(); i > 0; i--) { for (int k = 0; k < getLength()-i; k++) { System.out.print(' '); } for (int j = i; j > 0; j--) { System.out.print('*'); } System.out.println(); } } }
・ShapeTester.java
import java.util.Scanner; class ShapeTester { public static void main(String[]args) { Scanner stdIn = new Scanner(System.in); System.out.print("図形は何個:"); int num = stdIn.nextInt(); Shape[] p = new Shape[num]; for (int i = 0; i < num; i++) { System.out.print((i + 1) + "番の図形の種類 (1…左上直角二等辺三角形/2…右下直角二等辺三角形/3…右上直角二等辺三角形):"); int typeNum = stdIn.nextInt(); if (typeNum == 1) { System.out.print("一辺の長さ:"); int length = stdIn.nextInt(); p[i] = new LTopRightTriangle(length); } if (typeNum == 2) { System.out.print("一辺の長さ:"); int length = stdIn.nextInt(); p[i] = new RBottomRightTriangle(length); } if (typeNum == 3) { System.out.print("一辺の長さ:"); int length = stdIn.nextInt(); p[i] = new RTopRightTriangle(length); } } for (Shape s : p) { s.print(); } } }
・実行結果
図形は何個:3 1番の図形の種類 (1…左上直角二等辺三角形/2…右下直角二等辺三角形/3…右上直角二等辺三角形):1 一辺の長さ:4 2番の図形の種類 (1…左上直角二等辺三角形/2…右下直角二等辺三角形/3…右上直角二等辺三角形):2 一辺の長さ:4 3番の図形の種類 (1…左上直角二等辺三角形/2…右下直角二等辺三角形/3…右上直角二等辺三角形):3 一辺の長さ:4 LTopRightTriangle(length:4) **** *** ** * RBottomRightTriangle(length:4) * ** *** **** RTopRightTriangle(length:4) **** *** ** *
今回は以上です。お疲れ様でした!
さて、次回は演習 13-3 です。
Goodbye, Terminal… swaponQでした!