解答は earth.mlab.im.dendai.ac.jp の /home/submit/JavaBasic/[出題日]/[学籍番号] のディレクトリに提出しなさい。 ソースファイル (〜.java) のみを提出すること。
ファイルの送信には ftp ソフトを用いる。 Linux の gFTP を使った提出方法 (演習室のマニュアル) を参照すること。
文字を並べて画面上に絵を描くプログラムを書きなさい。 プログラムを実行したとき、例えば次のような文字を並べた絵が表示されれば良い。 プログラムの名前は AsciiArt とし、ファイル名は AsciiArt.java とする。
## ###### ### ### ### ### ### ### ###################### # # # # # +--+ +--+--+ # # | | | | | # # | | +--+--+ # # | | | | | # # | | +--+--+ # ======================
わざとエラーを入れたプログラムを用意してある。 このプログラムをダウンロードし Errors.java という名前で保存し、 エラーをすべて修正して、正しく実行できるように直しなさい。
プログラムの中身は次のようなものである。
public class Error { pablic static void maine(String[] args) System.out.pnintln("*****************************") System.out.println("* *"); System.out.println('* *"); System.out.println("* *); System.out,println("* *"); System.out.println{"* *"}; System.out.println("*****************************"): } }
3つの int 型変数を用意し適当な値を入れ、 この3つの整数の平均を表示するプログラムを書きなさい。
プログラム名を Average とし ファイル名を Average.java としたとき、プログラムの概略は次のようになる。
2 つの変数 a
, b
の内容を入れ替えるプログラムを作りたい。
ここで、次のようなプログラムを考えてみよう。
public class SwapAandB { public static void main(String[] args) { int a = 2; int b = 8; a = b; b = a; System.out.println("a=" + a + ", b=" + b); } }
ファイル名は SwapAandB.java とする。
ところが、このプログラムをコンパイルし実行してみると、
a=8, b=8
となってしまい入れ換えがうまくできないことがわかる。
"a = b;
" の行で a
を b
の値で上書きすると
元の a
の値が失われてしまうからである。
そこで a
を b
の値で上書きする前に、
元の a
の値を一旦別の変数 temp
に保存することを考えてみる。
temp
に元の a
の値が保存されていれば、
"a = b;"
のあとで b
に temp
の値を代入すれば良い。
プログラムの概略は次のようになる。 プログラム名は同様に SwapAandB とする。
public class SwapAandB { public static void main(String[] args) { int a = 2; int b = 8; int temp; /* 変数を入れ替える処理をここに書く */ System.out.println("a=" + a + ", b=" + b); } }
上のプログラムが正しく動くように完成させなさい。
必要な処理を記述しコンパイル・実行したとき、
a=8
, b=2
のように表示されれば良い。
整数 n の階乗 n! を、n = 1,2,3,... について求めるプログラムを作成しなさい。階乗の定義は以下のとおり。
n! = 1 × 2 × 3 × … × n
ここで、n! を (n - 1)! 使って書くと次のような式になる。
n! = (n - 1)! × n
これを用いると、n! を計算するときに、 1 つ前で求めた (n - 1)! を利用することができるので 計算が簡単になる。
public class PrimitiveFactorial { public static void main(String[] args) { // 1の階乗の計算 int n = 1; int factorial = 1; System.out.println(n + "! = " + factorial); // 2の階乗の計算 n = n + ... factorial = factorial * ... System.out.println(n + "! = " + factorial); (上の3行と同じ記述を 12の階乗までくりかえして書く) // 3の階乗の計算 ..... ..... ..... // 12の階乗の計算 n = n + ... factorial = factorial * ... System.out.println(n + "! = " + factorial); } }
変数 n
の値を 1 ずつ増やして、その時の n
の階乗の値を計算して
変数 factorial
に入れる、という処理を繰り返す。
n
が 12 になるまで繰り返すこと。
プログラム名は PrimitiveFactorial とし、 ファイル名は PrimitiveFactorial.java とする。
n ≧ 13 になると正しい値が求まらなくなるが、 これは int 型整数の扱える範囲を越えるためである。 今回はこれで仕方ないとする。
参考: 以下のようにすると int 型変数で扱える最大値が表示される。
System.out.println(Integer.MAX_VALUE);