当前位置: 代码迷 >> Java相关 >> 高手来帮帮忙啊,一个很简单的java问题
  详细解决方案

高手来帮帮忙啊,一个很简单的java问题

热度:134   发布时间:2007-04-11 22:19:39.0
高手来帮帮忙啊,一个很简单的java问题
创建一个Fraction类执行分数运算.要求如下:
1.用整型表示类的private成员变量,f1和f2
2.提供构造方法,将分子存入f1,分母存入f2
3.提供两个分数相加的运算方法,结果分别存入f1和f2
4.提供两个分数相减的运算方法,结果分别存入f1和f2
5.提供两个分数相乘的运算方法,结果分别存入f1和f2
6.提供两个分数相除的运算方法,结果分别存入f1和f2
7.以a/b的形式打印Fraction函数
8.以浮点数的形式打印Fraction函数
9.编写主控程序运行分数运算


帮帮忙啊,急!先谢谢哈
搜索更多相关的解决方案: java  

----------------解决方案--------------------------------------------------------

这个应该不难实现。。。。
前面2个很好实现
实现3,4,在类里面再写一个求最大公约数和最小公倍数的方法供求和差的方法调用。也很好实现
5可以直接把分子和分子相乘,分母和分母相乘,然后除去最大公约数
6就是乘的倒过来就行了
789应该就更好实现了

类中应该对分母为0等特殊情况进行过滤


我的思路是这样,这题应该比较好做的


----------------解决方案--------------------------------------------------------
具体程序楼主自己完成吧
----------------解决方案--------------------------------------------------------
结果分别存入f1和f2
public class YS{
private int f1;
private int f2;
public YS(float f1,float f2){
this.f1=f1;
this.f2=f2;
}
public float Fraction(){
f1=f1/f2+f1/f2;
f2=f1;
return f2;
}
.
.
.
.
.
public static void main(String arg0[]){
YS ys=new YS(10,20);
System.out.println("10/20"+ys.Fraction());
}
}

[此贴子已经被作者于2007-4-11 23:37:18编辑过]


----------------解决方案--------------------------------------------------------
import java.util.Scanner;
class Fraction
{
private int f1;
private int f2;
public Fraction()
{
Scanner scan=new Scanner(System.in);
System.out.println("分子:");
f1=scan.nextInt();
System.out.println("分母:");
f2=scan.nextInt();
System.out.println("你输入的分数是:"+f1+"/"+f2);
}
private int Commul(int a,int b) //最小公倍数
{
int d;
d=(a>b)?a:b;
for(;d%a!=0||d%b!=0;d++)
{
}
return d;
}
public void Add(Fraction frac)
{
int num;
num=Commul(this.f2,frac.f2);
this.f1=this.f1*(num/this.f2)+frac.f1*(num/frac.f2);
this.f2=num;
}
public float getAdd1()
{
return (float)f1/f2;
}
public void getAdd2()
{
System.out.println(f1+"/"+f2);
}
}
public class Test
{
public static void main(String[] args)
{
float add;
System.out.print("请输入第一个分数的");
Fraction frac1=new Fraction();
System.out.print("请输入第二个分数的");
Fraction frac2=new Fraction();

frac1.Add(frac2);
add=frac1.getAdd1();

System.out.print("两个分数的和是:"+add+" or ");
frac1.getAdd2();
}
}


加法运算后,f1,f2的值就变了,如何再进行减法,除法和乘法???
没思路,求助
----------------解决方案--------------------------------------------------------
我自己试试先,再想想,呵呵,谢谢你们哦^_^
----------------解决方案--------------------------------------------------------

import java.io.*;

public class Fraction{
int f1,f2; //f1为分子,f2为分母

Fraction(int f1, int f2){
try{
if(f2==0){
System.out.println("分母不能为0,请重置分母值");
f2=System.in.read();
}
}catch(Exception ex){System.out.println(ex.toString());}
this.f1=f1;
this.f2=f2;

}
public int gongyueshu(int a, int b){ //求最大公约数方法
int r,temp;
if(a<b){
temp=a;
a=b;
b=temp;
}
while((r=a%b)!=0){
a=b;
b=r;
}
return b;
}
public int gongbeishu(int a,int b){ //求最小公倍数
return a*b/gongyueshu(a,b);
}
public void add(Fraction f1,Fraction f2){ //分数加法运算,f1,f2分别为两个分数实例
int fenzi,fenmu;
fenmu=gongbeishu(f1.f2,f2.f2);
fenzi=gongbeishu(f1.f2,f2.f2)/f1.f2*f1.f1+gongbeishu(f1.f2,f2.f2)/f2.f2*f2.f1;

System.out.println(f1.f1+"/"+f1.f2+"+"+f2.f1+"/"+f2.f2+"="+fenzi/gongyueshu(fenzi,fenmu)+"/"+fenmu/gongyueshu(fenzi,fenmu));

}
public void minu(Fraction f1,Fraction f2){ //分数减法运算,f1,f2分别为两个分数
int fenzi,fenmu;
fenmu=gongbeishu(f1.f2,f2.f2);
fenzi=gongbeishu(f1.f2,f2.f2)/f1.f2*f1.f1-gongbeishu(f1.f2,f2.f2)/f2.f2*f2.f1;
System.out.println(f1.f1+"/"+f1.f2+"-"+f2.f1+"/"+f2.f2+"="+fenzi/gongyueshu(fenzi,fenmu)+"/"+fenmu/gongyueshu(fenzi,fenmu));
}
public void muti(Fraction f1,Fraction f2){ //分数乘法运算,f1,f2分别为两个分数
int fenzi,fenmu;
fenzi=f1.f1*f2.f1;
fenmu=f1.f2*f2.f2;
System.out.println(f1.f1+"/"+f1.f2+"×"+f2.f1+"/"+f2.f2+"="+fenzi/gongyueshu(fenzi,fenmu)+"/"+fenmu/gongyueshu(fenzi,fenmu));

}
public void devide(Fraction f1,Fraction f2){ //分数除法运算,f1,f2分别为两个分数
int fenzi,fenmu;
fenzi=f1.f1*f2.f2;
fenmu=f1.f2*f2.f1;
if(fenmu!=0)
System.out.println(f1.f1+"/"+f1.f2+"÷"+f2.f1+"/"+f2.f2+"="+fenzi/gongyueshu(fenzi,fenmu)+"/"+fenmu/gongyueshu(fenzi,fenmu));
else
System.out.println("分母为0,无意义.");
}
public void fudian(Fraction f1) { //以浮点数打印分数
double result;
result=(double)f1.f1/(double)f1.f2;
System.out.println(f1.f1+"/"+f1.f2+"="+result);
}

public static void main(String args[]){
Fraction f1=new Fraction(1,5);
Fraction f2=new Fraction(1,2);
f1.add(f1,f2);
f1.minu(f1,f2);
f1.muti(f1,f2);
f1.devide(f1,f2);
f1.fudian(f1);
f2.fudian(f2);
}
}

[此贴子已经被作者于2007-4-13 13:35:40编辑过]


----------------解决方案--------------------------------------------------------
3.提供两个分数相加的运算方法,结果分别存入f1和f2
4.提供两个分数相减的运算方法,结果分别存入f1和f2
5.提供两个分数相乘的运算方法,结果分别存入f1和f2
6.提供两个分数相除的运算方法,结果分别存入f1和f2


题目要求运算后的结果要分别存到 f1,f2里啊。你是新创立了两个变量fenzi,fenmu 啊
----------------解决方案--------------------------------------------------------
那就再加两个变量,分别用于暂时存储fenzi fenmu不就行了。。。很好改的
----------------解决方案--------------------------------------------------------
学习了~~~~~~~~
----------------解决方案--------------------------------------------------------
  相关解决方案