package j1.lesson07;
import java.io.*;
/**
* 課題0704 - 解答例.
* @author s.arakawa
* @version $Id: PlotDiamond_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
*/
public class PlotDiamond {
/**
* コンソールから1以上の整数を入力させ、入力された値をサイズとした図形をコンソール上に表示するプログラム。
* 表示する図形は以下の通りである。
* <pre>
* (入力された値が 1)
* *
*
* (入力された値が 2)
* *
* ***
* *
*
* (入力された値が 3)
* *
* ***
* *****
* ***
* *
*
* (入力された値が 4)
* *
* ***
* *****
* *******
* *****
* ***
* *
*
* ...
* </pre>
* @param args 無視される
* @throws IOException 入力時に例外が発生した場合
*/
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("図形の大きさを入力:");
int size = Integer.parseInt(reader.readLine());
if (size < 1) {
System.out.println("1以上の整数を入力してください");
}
else {
plot(size);
}
}
/**
* 与えられた引数を図形のサイズとして、課題で指定された図形を表示する。
* <code>size</code> が <code>0</code> 以下の場合は考慮しない。
* @param size 図形のサイズ
*/
public static void plot(int size) {
// 1 行目から size 行目までを表示
for (int i = 1; i <= size; i++) {
plotLine(size - i, 2 * i - 1);
}
// size + 1 行目から最後まで表示
for (int i = size - 1; i >= 1; i--) {
plotLine(size - i, 2 * i - 1);
}
}
/**
* <b>このメソッドは課題の仕様に含まれていない</b>。
* 与えられた引数に対して、課題で指定された図形の1行分を表示する。
* 引数は <code>space</code>, <code>aster</code> の順に指定され、
* <code>space</code> は先頭のスペースの個数、
* <code>aster</code> は表示するアスタリスクの個数を表す。
* @param space 先頭のスペースの個数
* @param aster 表示するアスタリスクの個数
*/
public static void plotLine(int space, int aster) {
// 先頭のスペースを回数分表示
for (int i = 1; i <= space; i++) {
System.out.print(" ");
}
// * を回数分表示
for (int i = 1; i <= aster; i++) {
System.out.print("*");
}
// 改行を行う。単純に
// System.out.println();
// でも同じ意味になる
System.out.println("");
}
}
|