package j1.lesson04;
import java.io.*;
/**
* 課題0401 - 解答例.
* @author s.arakawa
* @version $Id: ToZero_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
*/
public class ToZero {
/**
* コンソールに整数を一つ入力させ、入力された値を1づつ0に近づかせながら表示するプログラム。
* @param args 無視される
* @throws IOException 入力中に例外が発生した場合
*/
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("整数を入力:");
int n = Integer.parseInt(reader.readLine());
// 方針
//
// まず、出力のパターンを理解する
// a. どんな値が指定されても、最初に表示されるのは指定された値
// b. どんな値が指定されても、最後に表示されるのは 0
// c. 正の値が指定された場合は、その値から 0 までを 1 づつ減らしながら表示する
// d. 負の値が指定された場合は、その値から 0 までを 1 づつ増やしながら表示する
// e. 0 が指定された場合は、0 とだけ表示する
//
// 次に、プログラムに書き直しやすいようにルールを見つける
// f. 0 は正として扱っても負として扱ってもかまわない (c,d,e)
// g. 正の値で、その値から 0 までを 1 づつ減らしながら… は、値が 0 以上の間…となる
// h. 負の値で、その値から 0 までを 1 づつ減らしながら… は、値が 0 以下の間…となる
//
// 流れを考える
// 1. 指定された値が正か負かで場合分け
// 2p. (正の値が指定された場合) n から 0 まで、1 づつ減らしながら表示する
// 2m. (それ以外 = 負の値または0) n から 0 まで、1 づつ増やしながら表示する (f)
// 指定された値が正か負かで場合分け
if (n > 0) {
// (正の値が指定された場合)
// n から 0 まで、1 づつ減らしながら表示する
// -> n から 0 ということは、 n が 0 以上の間 (g)
for (int i = n; i >= 0; i--) {
System.out.println(i);
}
}
else {
// (それ以外 = 負の値または0)
// n から 0 まで、1 づつ増やしながら表示する
// -> n から 0 ということは、n が 0 以下の間 (h)
for (int i = n; i <= 0; i++) {
System.out.println(i);
}
}
}
}
|