華為入局智慧汽車:軟硬體、生態和發展思路
阿新 • • 發佈:2020-09-30
一.有理數類程式碼
package code; public class RationalNum { private int Molecule; //分子 private int Denominator; //分母 public RationalNum(int Molecule, int Denominator) { this.Molecule = Molecule; this.Denominator = Denominator; } public int getMolecule() { return Molecule; } public void setMolecule(int molecule) { Molecule = molecule; } public int getDenominator() { return Denominator; } public void setDenominator(int denominator) { Denominator = denominator; } public RationalNum addition(RationalNum N2) { //加法 int m=this.Molecule*N2.Denominator+N2.Molecule*this.Denominator; int d=this.Denominator*N2.Denominator; return new RationalNum(m,d); } public RationalNum subtraction(RationalNum N2) { //減法 int m=this.Molecule*N2.Denominator-N2.Molecule*this.Denominator; int d=this.Denominator*N2.Denominator; return new RationalNum(m,d); } public RationalNum multiplication(RationalNum N2) { //乘法 int m=this.Molecule*N2.Molecule; int d=this.Denominator*N2.Denominator; return new RationalNum(m,d); } public RationalNum division(RationalNum N2) { //除法 int m=this.Molecule*N2.Denominator; int d=this.Denominator*N2.Molecule; return new RationalNum(m,d); } public boolean equals(RationalNum R2) { //判斷是否相等 if(this.subtraction(R2).getMolecule()==0) return true; else return false; } public int compareTo(RationalNum R2) { //比較大小 if(this.subtraction(R2).getMolecule()>0) return 1; else if(this.subtraction( R2).getMolecule()==0) return 0; else return -1; } public double doubleValue() { //轉換成double型 return this.Molecule*1.0/this.Denominator; } public int intValue() { //轉換成int型 return (int)doubleValue(); } public long longValue() { //轉換成long型 return (long)doubleValue(); } public float floatValue() { //轉換成float型 return (float)doubleValue(); } public String toString() { //轉換成String型 if(this.Denominator==1) return this.Molecule+" "; else return this.Molecule+"/"+this.Denominator; } }
二.測試程式碼
package test; import code.RationalNum; public class Main { public static void main(String[] args) { RationalNum n1 = new RationalNum(5, 6); RationalNum n2 = new RationalNum(7, 8); System.out.println(n1.addition(n2)); System.out.println(n1.subtraction(n2)); System.out.println(n1.multiplication(n2)); System.out.println(n1.division(n2)); System.out.println(n1.equals(n2)); System.out.println(n1.compareTo(n2)); System.out.println(n1.toString()); System.out.println(n1.doubleValue()); System.out.println(n1.intValue()); System.out.println(n1.longValue()); System.out.println(n1.floatValue()); } }
執行結果截圖
三.討論
1、與c語言的有理數程式碼相比較,為什麼你設計的類更加面向物件?
因為c語言的有理數程式碼是面向程式的執行過程,而Java則是面向物件的,編寫出一些功能性的程式碼,在運用時直接呼叫就行了。
2、別人如何複用你的程式碼?
匯入我所編寫的有理數程式碼包。
3、別人的程式碼是否依賴你的有理數類的屬性?當你的有理數類的屬性修改時,是否會影響他人呼叫你有理數類的程式碼?
依賴;不影響。
4、有理數類的public方法是否設定合適?為什麼有的方法設定為private?
合適;因為有的方法不能隨意更改,而且複雜,設為private就能避免許多麻煩。