練習問題

1. HelloWorld 改

コマンドライン引数で与えられた人に,挨拶しましょう. もし,誰も指定されない場合は,"Hello, World"と出力してください. クラス名は,HelloWorld2 とし,クラス定義の基本形に従ってプログラムを書いてください. コマンドライン引数も参考になるでしょう.

出力例

$ java HelloWorld2 Tamada
Hello, Tamada
$ java HelloWorld2 Sagisaka
Hello, Sagisaka
$ java HelloWorld2
Hello, World

2. HelloWorld 改2

コマンドライン引数で与えられた人に,挨拶しましょう. 基本的には,HelloWorld 改と同じですが,もし, "World"が指定されたら,"Hi, World"と気さくに挨拶してください. クラス名は,HelloWorld3 とし,クラス定義の基本形 に従ってプログラムを書いてください. コマンドライン引数も参考になるでしょう.

出力例

$ java HelloWorld3 Miyamori
Hello, Miyamori
$ java HelloWorld3 Tamada
Hello, Tamada
$ java HelloWorld3 World
Hi, World
$ java HelloWorld3
Hello, World

3. 階乗

コマンドライン引数であたえられた数値の階乗を計算するプログラムを作成してください. $n$の階乗は,$n! = n \times (n - 1) \times (n - 2) … 2 \times 1$ で求められます.

public class Factorial{
    void run(String[] args){
        Integer number = Integer.valueOf(args[0]);
        Integer factorial;
        // number の階乗を計算する.
        System.out.printf("%d! = %d%n", number, factorial);
    }
    // mainメソッドは省略
}

String型からInteger型への変換

なお,String型の変数からInteger型に変換するには,以下のように行います. Factorial の3行目で同じことを行っています.

// Integer max = "15"; // コンパイルエラー.
    // "15"という文字列はそのまま Integer 型に代入できない.
String numberString = "15";
Integer max = Integer.valueOf(numberString);
    // => max には 15 という数値が代入される.
String型からInteger型への変換についての補足

出力例

$ java Factorial 3
3! = 6
$ java Factorial 4
4! = 24
$ java Factorial 5
5! = 120

4. FizzBuzz

FizzBuzz は1から特定の値までの数値を順に出力します. ただし,3の倍数の時は,数値の代わりに Fizz という文字列を, 5の倍数の時は,数値の代わりに Buzz という文字列を, 3と5の公倍数の時は,数値の代わりに FizzBuzz という文字列を出力します. クラス名は,FizzBuzzとしてください.

コマンドラインから受け取った値まで,上記のルールに従って値を出力してみましょう. もし,コマンドラインで値が指定されなかったときは,15が指定されたものとして処理を進めてください.

出力例

$ java FizzBuzz 3
1
2
Fizz
$ java FizzBuzz
1
2
Fizz
4
Buzz
... 途中省略
13
14
FizzBuzz

5. Fibonacci数列

Fibonacci数列とは,次の漸化式で表される数列です. このFibonacci数列を初項からコマンドライン引数で指定された項まで出力してみましょう. コマンドライン引数が指定されなかった場合は,20項目(20項も出力結果に含む)までを出力するようにしてください. クラス名は,Fibonacciとします.

$$ F_i = \begin{cases} 1 & (i = 1) \\
1 & (i = 2) \\
F_{i-2}+F_{i-1} & (i \geq 3)
\end{cases} $$

出力例

$ java Fibonacci 3
1 1 2
$ java Fibonacci 8
1 1 2 3 5 8 13 21
$ java Fibonacci 15
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
$ java Fibonacci
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765