有理数类
代码
public class Rational {
private long numerator = 0; //分子
private long denominator = 1; //分母
public Rational() {
this(0,1);
}
//获取分子
public long getNumerator(){
return numerator;
}
//获取分母
public long getDenominator(){
return denominator;
}
public Rational(long numerator, long denominator) {
long gcd = gcd(numerator,denominator);
this.numerator= ((denominator>0)? 1 : -1)*numerator / gcd;
this.denominator=Math.abs(denominator)/gcd;
}
//求最大公约数
public static long gcd(long n,long d){
long n1=Math.abs(n);
long n2=Math.abs(d);
int gcd=1;
for(int k=1;k<=n1&&k<=n2;k++){
if(n1%k==0&&n2%k==0){
gcd=k;
}
}
return gcd;
}
//加法运算
public Rational add(Rational secondRational){
long n=numerator*secondRational.getDenominator()+
denominator*secondRational.getNumerator();
long d=denominator*secondRational.getDenominator();
return new Rational(n,d);
}
//减法运算
public Rational subtract(Rational secondRational){
long n=numerator*secondRational.getDenominator()-
denominator*secondRational.getNumerator();
long d=denominator*secondRational.getDenominator();
return new Rational(n,d);
}
//乘法运算
public Rational multiply(Rational secondRational){
long n=numerator*secondRational.getNumerator();
long d=denominator*secondRational.getDenominator();
return new Rational(n,d);
}
//除法运算
public Rational divide(Rational secondRational){
long n=numerator*secondRational.getDenominator();
long d=denominator*secondRational.numerator;
return new Rational(n,d);
}
测试代码
package R1;
import R1.Rational;
public class Main {
public static void main(String[] args) {
Rational x=new Rational(4,5);
Rational y=new Rational(1,2);
System.out.println("相加得:"+x.add(y));//输出两分数相加的结果
System.out.println("相减得:"+x.subtract(y));//输出两分数相减的结果
System.out.println("相乘得:"+x.multiply(y));//输出两分数相乘的结果
System.out.println("相除得:"+x.divide(y));//输出两分数相除的结果
}
}
描述与C语言代码相比较,你设计的代码更加面向对象
与C语言相比,JAVA更加面向对象,JAVA直接在类里面把类的属性写出来,在同一个项目内的其他class里面就可以直接使用。
别人如何复用你的代码
只要导入我代码中有理数的类就可以使用。
别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
是,会影响他人调用我的代码。
有理数类的public方法是否设置合适?为什么有的方法设置为private?
public表示公有的,private表示私有的;public的成员可以被任何类访问,private仅限于自己访问。