ta_Graphics2008/Complex
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[ta_Graphics2008]]
*Complex.java [#b1da8265]
こぴぺしたらインデントがおかしい…
#pre{{
1 /** 複素数クラス by takataka.
2 あまりよいプログラムの例ではないけれど
3 (演算のたびに新しいインスタンス生成するとことか)
4 */
5
6 public class Complex {
7
8 private double re; // 実部の値を格納する非公開のインスタンス変数
9 private double im; // 虚部の値を格納する非公開のインスタンス変数
10
11 /** re を実部の値,im を虚部の値にもつ
12 複素数インスタンスを生成するコンストラクタ */
13 public Complex(double re, double im){
14 this.set(re, im);
15 }
16
17 /** 引数なしのコンストラクタ.実部も虚部も0にセット */
18 public Complex(){
19 this.set(0.0, 0.0);
20 }
21
22 /** re を実部の値,im を虚部の値にセットする */
23 public void set(double re, double im){
24 this.re = re; this.im = im;
25 }
26
27 /** 実部の値を返す */
28 public double getRe(){
29 return this.re;
30 }
31
32 /** 虚部の値を返す */
33 public double getIm(){
34 return this.im;
35 }
36
37 /** 絶対値を返す */
38 public double getAbs(){
39 return this.re*this.re + this.im*this.im;
40 }
41
42 /** この複素数に z を加えた新しい複素数を返すインスタンスメソッド */
43 public Complex add(Complex z){
44 return new Complex(this.re + z.re, this.im + z.im);
45 }
46
47 /** z1 + z2 を返すクラスメソッド(addを多重定義) */
48 public static Complex add(Complex z1, Complex z2){
49 return new Complex(z1.re + z2.re, z1.im + z2.im);
50 }
51
52 /** 再定義した toStringメソッド
53 ( System.out.println 等で使われる)*/
54 public String toString(){
55 if(this.im >= 0.0){
56 return this.re + "+" + this.im + "i";
57 }else{
58 // 先頭の "" は re + im をdouble型で評価させないため
59 return "" + this.re + this.im + "i";
60 }
61 }
62
63 /** テスト用 main メソッド
64 (このようにクラス定義と一緒にmainを書いてもよい)*/
65 public static void main(String[] args){
66
67 Complex z1 = new Complex(2.0, -3.0);
68 System.out.println(z1);
69 Complex z2 = new Complex();
70 System.out.println(z2);
71
72 z2.set(1/Math.sqrt(2), -1/Math.sqrt(2));
73 System.out.println("実部は" + z2.getRe());
74 System.out.println("虚部は" + z2.getIm());
75 System.out.println("絶対値は" + z2.getAbs());
76
77 z2.set(-3, 5);
78 Complex z3 = z1.add(z2);
79 Complex z4 = Complex.add(z1, z2);
80 System.out.println(z3 + " " + z4);
81 System.out.println(z1.add(new Complex(-1.5, 2.5)));
82
83 }
84 }
}}
終了行:
[[ta_Graphics2008]]
*Complex.java [#b1da8265]
こぴぺしたらインデントがおかしい…
#pre{{
1 /** 複素数クラス by takataka.
2 あまりよいプログラムの例ではないけれど
3 (演算のたびに新しいインスタンス生成するとことか)
4 */
5
6 public class Complex {
7
8 private double re; // 実部の値を格納する非公開のインスタンス変数
9 private double im; // 虚部の値を格納する非公開のインスタンス変数
10
11 /** re を実部の値,im を虚部の値にもつ
12 複素数インスタンスを生成するコンストラクタ */
13 public Complex(double re, double im){
14 this.set(re, im);
15 }
16
17 /** 引数なしのコンストラクタ.実部も虚部も0にセット */
18 public Complex(){
19 this.set(0.0, 0.0);
20 }
21
22 /** re を実部の値,im を虚部の値にセットする */
23 public void set(double re, double im){
24 this.re = re; this.im = im;
25 }
26
27 /** 実部の値を返す */
28 public double getRe(){
29 return this.re;
30 }
31
32 /** 虚部の値を返す */
33 public double getIm(){
34 return this.im;
35 }
36
37 /** 絶対値を返す */
38 public double getAbs(){
39 return this.re*this.re + this.im*this.im;
40 }
41
42 /** この複素数に z を加えた新しい複素数を返すインスタンスメソッド */
43 public Complex add(Complex z){
44 return new Complex(this.re + z.re, this.im + z.im);
45 }
46
47 /** z1 + z2 を返すクラスメソッド(addを多重定義) */
48 public static Complex add(Complex z1, Complex z2){
49 return new Complex(z1.re + z2.re, z1.im + z2.im);
50 }
51
52 /** 再定義した toStringメソッド
53 ( System.out.println 等で使われる)*/
54 public String toString(){
55 if(this.im >= 0.0){
56 return this.re + "+" + this.im + "i";
57 }else{
58 // 先頭の "" は re + im をdouble型で評価させないため
59 return "" + this.re + this.im + "i";
60 }
61 }
62
63 /** テスト用 main メソッド
64 (このようにクラス定義と一緒にmainを書いてもよい)*/
65 public static void main(String[] args){
66
67 Complex z1 = new Complex(2.0, -3.0);
68 System.out.println(z1);
69 Complex z2 = new Complex();
70 System.out.println(z2);
71
72 z2.set(1/Math.sqrt(2), -1/Math.sqrt(2));
73 System.out.println("実部は" + z2.getRe());
74 System.out.println("虚部は" + z2.getIm());
75 System.out.println("絶対値は" + z2.getAbs());
76
77 z2.set(-3, 5);
78 Complex z3 = z1.add(z2);
79 Complex z4 = Complex.add(z1, z2);
80 System.out.println(z3 + " " + z4);
81 System.out.println(z1.add(new Complex(-1.5, 2.5)));
82
83 }
84 }
}}
ページ名: