1.有理数类的代码
package rationalNumber;
public class RationalNumber {
private int integer = 0;// 整数
private int decimal = 0;// 小数
public int getInteger() {
return integer;
}
public void setInteger(int integer) {
this.integer = integer;
}
public int getDecimal() {
return decimal;
}
public void setDecimal(int decimal) {
this.decimal = decimal;
}
public void rational(String Num) {
int i = 0;
for (int j = 0; j < Num.length(); j++) {
if (Num.charAt(j) == '.') {
i = j;
break;
}
}
String x1 = "", x2 = "";
if (i != 0) {// 有小数部分
for (int j = 0; j < i; j++) {
x1 = x1 + Num.charAt(j);
}
for (int j = i + 1; j < Num.length(); j++) {
x2 = x2 + Num.charAt(j);
}
} else {
x1 = Num;
x2 = "0";
}
this.integer = Integer.valueOf(x1);
this.decimal = Integer.valueOf(x2);
}
public void add(String Num) {//加法
RationalNumber x = new RationalNumber();
x.rational(Num);
String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
System.out.println(Double.valueOf(x1) + Double.valueOf(x2));
}
public void substract(String Num) {//减法
RationalNumber x = new RationalNumber();
x.rational(Num);
String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
System.out.println(Double.valueOf(x1) - Double.valueOf(x2));
}
public void multiply(String Num) {//乘法
RationalNumber x = new RationalNumber();
x.rational(Num);
String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
System.out.println(Double.valueOf(x1) * Double.valueOf(x2));
}
public void divide(String Num) {//除法
RationalNumber x = new RationalNumber();
x.rational(Num);
String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
System.out.println(Double.valueOf(x1) / Double.valueOf(x2));
}
}
2.测试代码
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String num1 = sc.nextLine();
String num2 = sc.nextLine();
RationalNumber a = new RationalNumber();
a.rational(num1);
a.add(num2);
a.substract(num2);
a.multiply(num2);
a.divide(num2);
}
}
运行结果
3.讨论
-
尝试描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
c语言是将功能以函数形式写出,在类里将功能以方法形式集中,更便于使用
-
别人如何复用你的代码?
导入rationalNumber包可以使用RationalNumber类
-
别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
依赖;影响。
-
有理数类的public方法是否设置合适?为什么有的方法设置为private?
合适;有的细节不必关心,调用者只要关注调用public踩油门的方法。