サンプルコードについて
array.dat、qequ.dat、sort.datの3つのサンプルを同梱しています。
array.dat(配列の代入)
配列の代入があくまで参照の代入を行っていると言うことを示す例です。
> java array 10
a[0]=6
a[1]=10
a[2]=6
b[1]=3 , a[1][1]=3
> java array -1
Exception in thread "main" java.lang.NegativeArraySizeException
at array.main(array.dat:12)
> java array 0
a[0]=6
a[1]=0
a[2]=6
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at array.main(array.dat:22)
というように引数に数字を1つとり、a[3][6]という配列に対して、b[引数]を生成してa[1]に代入します。
この時点でa[1]とbは同じものであり、a[1][1]とb[1]も同じものであるということを実際に試します。
引数に負の値を与えたり0を与えると、Redim時や代入時にエラーが起きます。
あえてチェックをせずエラーで終了させています。(ちゃんと行数などが表示されます)
(まぁ例外処理を行っていないとも言えますが・・・)
qequ.dat(2次方程式の解)
引数に数値を3つとって2次方程式を解きます。
このコンパイラからは直接Math.sqrtによる平方根計算を利用することはできません。
RTClassを経由して求めることもできますが、ここではニュートン法を用いて自前で平方根の計算をさせています。(少しややこしいプログラムの検証にもなるし・・・)
> java qequ 1 5 6
1.0x^2 + 5.0x + 6.0 = 0 : x = -3.0 , -2.0 (実数解)
> java qequ 1 6 9
1.0x^2 + 6.0x + 9.0 = 0 : x = -3.0 (重解)
> java qequ 1 3 6
1.0x^2 + 3.0x + 6.0 = 0 : x = -1.5±1.9364917i (虚数解)
sort.dat(文字列のソート)
引数にとった文字列を簡単なバブルソートでソートします。
Javaは文字列をUnicodeで扱うので、漢字やひらがなも可。
> java sort 漢字 abc あいうえお 123 カタカナ 123
1:123
2:abc
3:あいうえお
4:カタカナ
5:漢字
6:123
文字列も簡単に比較できるよ〜ということで。