?? ex040202.java
字號:
//P104 2 (2)
//設計一個分數類,并測試
import java.io.*;
class Rational {
public Rational(){
}
public Rational(Rational r){
sign = r.sign;
numerator = r.numerator;
denominator = r.denominator;
}
public Rational(int n, int d){
sign = n * d>0 ? 1 : -1;
numerator = Math.abs(n);
denominator = Math.abs(d);
convert(this);
}
public Rational add(Rational r){
Rational t = new Rational();
t.numerator = (this.sign * this.numerator) * r.denominator +
(r.sign * r.numerator) * this.denominator;
t.denominator = this.denominator * r.denominator;
t.sign = t.numerator > 0 ? 1 : -1;
t.numerator = Math.abs(t.numerator);
convert(t);
return t;
}
public Rational minus(Rational r){
Rational t = new Rational(r);
t.sign = - t.sign;
return add(t);
}
public Rational multiply(Rational r){
Rational t = new Rational(r);
t.sign = this.sign * r.sign;
t.numerator = this.numerator * r.numerator;
t.denominator =this.denominator * r.denominator;
convert(t);
return t;
}
public Rational divide(Rational r){
Rational t = new Rational(r);
t.sign = r.sign;
t.numerator = r.denominator ;
t.denominator =r.numerator;
return multiply(t);
}
public void print(){
if (numerator % denominator ==0)
System.out.print((sign < 0?"-":"")+(numerator / denominator));
else
System.out.print((sign < 0?"-":"")+numerator+"/"+denominator);
}
private int sign;
private int numerator;
private int denominator;
private void convert(Rational r){
int t = r.numerator >= r.denominator ? r.denominator : r.numerator;
while (t >1)
{
if (r.numerator % t == 0 && r.denominator % t ==0){
break;
}
t--;
}
try{
r.numerator = r.numerator / t;
r.denominator = r.denominator / t;
}catch (ArithmeticException e) {
System.out.println("\n\u0007 **** 分母 等于 0 ****");
System.exit(1);
}
}
}
public class Ex040202{
public static void main(String[] args){
int m,n;
System.out.println("輸入第1個分數 ");
System.out.print("分子 =");m=inputInt();
System.out.print("分母 =");n=inputInt();
Rational r1 = new Rational(m,n);
System.out.println("輸入第2個分數 ");
System.out.print("分子 =");m=inputInt();
System.out.print("分母 =");n=inputInt();
Rational r2 = new Rational(m,n);
System.out.println();
r1.print();
System.out.print(" + ");
r2.print();
System.out.print(" = ");
r1.add(r2).print();
System.out.println();
r1.print();
System.out.print(" - ");
r2.print();
System.out.print(" = ");
r1.minus(r2).print();
System.out.println();
r1.print();
System.out.print(" * ");
r2.print();
System.out.print(" = ");
r1.multiply(r2).print();
System.out.println();
r1.print();
System.out.print(" / ");
r2.print();
System.out.print(" = ");
r1.divide(r2).print();
System.out.println();
}
public static int inputInt(){
Reader ir = new InputStreamReader(System.in);
BufferedReader r = new BufferedReader(ir);
String sc="";
int n=0;
try{
sc = r.readLine();
}catch (IOException e){}
try{
n=Integer.parseInt(sc);
}catch (NumberFormatException e){
System.out.println("輸入的數據不是整數");
System.exit(1);
}
return n;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -