比较经典的JAVA面向对象题目和我的解法
设计一个表示分数的类XXX。这个类用两个int类型的变量分别表示分子和分母,构造一个a/b的分数
这个类要提供以下的功能:
double toDouble();
将分数转换为double
Fraction plus(Fraction r);
自己的分数和r的分数相加,产生一个新的对象。
Fraction multiply(Fraction r);
/将自己的分数和r的分数相乘,产生一个新的对象。
void print();
将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。
将自己的分数和r的分数相加,产生一个新对象。
将自己的分数和r的分数相乘,产生一个新对象。
将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。
注意,在创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。
分享一下我的解法,可能不好…凑合着写
//类
public class Finction {
private int a ; // 分子
private int b; // 分母
// 转化为Double
public double todouble(){
int a = this.a;
int b = this.b;
double c = a / b ;
return c;
}
public double print(){
if (a % b == 0){
int i = a / b;
double i1 = i;
System.out.println(i1);
return i1;
}
else {
// 取公约数
ArrayList<Integer> list = new ArrayList<>();
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
for (int i = 2; i < a; i++) {
if (a % i == 0){
// 把所有可以整除的放进来
list.add(i);
}
}
for (int i = 2; i < b; i++) {
if (b % i == 0){
// 把所有可以整除的放进来
list1.add(i);
}
}
for (int i = 0; i < list.size(); i++) {
for (int i1 = 0; i1 < list1.size(); i1++) {
if (list.get(i) == list1.get(i1)){
list2.add(list1.get(i1));
}
}
}
// 如果有公约数则除
if (list2.size() != 0){
for (int i = 0; i < list2.size(); i++) {
a = a / list2.get(i);
b = b / list2.get(i);
}
}
System.out.println(a + "/" + b);
return 0;
}
}
// 相加
public Finction plus(Finction i){
Finction f = new Finction();
int b = i.getB();
int b1 = this.b;
int b2 = b * b1;
int a = i.getA();
int a1 = this.a;
int i1 = a1 * b;
int i2 = a * b1;
int i3 = i1 + i2;
f.setA(i3);
f.setB(b2);
return f;
}
// 相乘
public Finction multiply(Finction finction){
Finction f = new Finction();
int b = finction.getB();
int bi = this.b;
// 分母
int b1 = b * bi;
//分子
int a = finction.getA();
int a1 = this.a;
int a2 = a * a1;
f.setA(a2);
f.setB(b1);
return f;
}
public Finction() {
}
public Finction(int a, int b) {
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
// 主方法
` public class DoMain {
public static void main(String[] args) {
Finction finction = new Finction(3,2);
Finction multiply = finction.multiply(new Finction(6, 5));
multiply.print();
System.out.println("======================");
Finction plus = finction.plus(new Finction(3, 2));
plus.print();
System.out.println("=========================");
Finction plus1 = finction.plus(new Finction(6, 2));
plus1.print();
}
}
`
本人才疏学浅,如有错误,请指正.
如有不足,请多包涵,谢谢