記憶

仕事のメモなど

javaで分数

2008-04-17 23:51:43 | java
子どもの塾の問題を一緒に解かされるため、面倒なので分数計算のプログラムを書こうと思い、"java 分数"でググって最初にヒットしたここのページの演習をやってみた。

一応ちゃんと動くっぽいので貼ります。バグってるぞゴルァという方、コメントください。m(_ _)m

package fraction;

public class Fraction {
/** 分子 */
private long numerator;
/** 分母 */
private long denominator;
/**
* コンストラクタ
* @param num 分子
* @param den 分母
*/
public Fraction(int num, int den) {
numerator = num;
denominator = den;
}
/**
* コンストラクタ
* 分母は、den1 x den2 とする
* @param num 分子
* @param den1 分母(掛け算)
* @param den2 分母(掛け算)
*/
public Fraction(int num, int den1, int den2) {
numerator = num;
denominator = den1 * den2;
}
/**
* 分子の値を取得する
* @return
*/
public long getNumerator() {
return numerator / getGreatestCommonFactor(numerator, denominator) ;
}
/**
* 分母の値を取得する
* @return
*/
public long getDenominator() {
return denominator / getGreatestCommonFactor(numerator, denominator);
}
/**
* 現在の分数値にfで指定される分数値を加える
* @param f 分数値
*/
public void add(Fraction f) {
// 分子 = (自分の分子 x 相手の分母) + (相手の分子 x 自分の分母)
numerator = numerator * f.getDenominator() + f.getNumerator() * denominator;
// 分母 = 自分の分母 x 相手の分母
denominator = denominator * f.getDenominator();
}
/**
* 現在の分数値からfで指定される分数値を引く
* @param f 分数値
*/
public void sub(Fraction f) {
// 分子 = (自分の分子 x 相手の分母) - (相手の分子 x 自分の分母)
numerator = numerator * f.getDenominator() - f.getNumerator() * denominator;
// 分母 = 自分の分母 x 相手の分母
denominator = denominator * f.getDenominator();
}
/**
* 現在の分数値にfで指定される分数値を掛ける
* @param f 分数値
*/
public void mul(Fraction f) {
numerator = numerator * f.getNumerator();
denominator = denominator * f.getDenominator();
}
/**
* 現在の分数値をfで指定される分数値で割る
* @param f 分数値
*/
public void div(Fraction f) {
numerator = numerator * f.getDenominator();
denominator = denominator * f.getNumerator();
}
/**
* 最大公約数を計算する
* @param x 数値
* @param y 数値
* @return 最大公約数
*/
private long getGreatestCommonFactor(long x, long y) {
long warareru;
long waru;
long ans=0;
if ( x == y ) {
return x;
}
if ( x > y ) {
warareru = x;
waru = y;
} else {
warareru = y;
waru = x;
}
while ( waru != 0 ) {
ans = waru;
waru = warareru % waru;
warareru = ans;
}
return ans;
}
}


java reflection

2008-03-14 00:14:04 | java
君たちがフレームワークを作りたいのはわかった。でもね、もうそんなことやってるタイミングじゃないでしょ。それで全部書き換えてくださいって、何様? そんなことしてる暇があったらてめーが書いたコードのバグ取りやれや。しかもこれから結合テストでパフォーマンスが最大の関心事になってきてるのに、なんでそんことしてわざわざパフォーマンスを落とすわけ?? クラスのメソッド探すのに延々ループさせるって、いやがらせですか??
そもそもこんな処理をjavaで書かしといて、いまさらパフォーマンスがどうのこうの言ってる上の方もなんだかなぁっと思うが..
そっか、それに対する皮肉も込めてやってるのか、さすが俺様のやることは高尚ですなぁ... って ふざけんな!!!

classpath地獄

2008-01-26 16:12:40 | java
javaをやってるといつもはまってしまうのが、ClassNotFoundExceptionでCLASSPATHをどう設定してもうまくいかないことが多々あります。いつまでたってもこれの仕組みがちゃんと理解できない。最近はeclipseを使うことがほとんどなのでeclipseから実行する分には悩みはないが、作ったものをいざコマンドラインから実行しようとするとだいたいはこれでうまくいきません。
で、調べたことを忘れないようにメモ

(1)java -verbose でロードされるクラスの様子がわかる
(2)classpathをどうやってもだめなときは、必要なjarファイルを jre/lib/extの下に置けばとりあえずうまくいく。

今はとりあえず上記の(2)で逃げているが、JavaHouseのCLASSPATH完全理解の記事をちゃんと読んで理解したい。でも頭悪いからなぁ ..(;´Д`)
http://java-house.jp/ml/archive/j-h-b/021880.html#body

その後、ドンピシャのものをみつけました (・∀・)
http://java-house.jp/ml/archive/j-h-b/043878.html#body
-jar指定するとクラスパス設定は無視されるなんて、なんてクソ仕様..て思うのは自分だけか