public class rypgood
{
public static void main(String args[])
{
doing t=new doing(3);
System.out.println(t.Sum());
System.out.println(2.0/1+3.0/2+5.0/3);
}

}
class doing
{
private float a[];
private float b[];
private int n;
private static float sum;
doing(int n)
{
a=new float[n];
b=new float[n];
this.n=n;
sum=0;

a[0]=1.0f;
a[1]=2.0f;
b[0]=2.0f;
b[1]=3.0f;
if(n>=2)
{

for (int i=2;i<n;i++)
  {
  a[i]=a[i-1]+a[i-2];
  }
for (int i=2;i<n;i++)
  {
  b[i]=b[i-1]+b[i-2];
  }
}
}
private float fenmu()
{ return  a[n-1];
}
private float fenzi()
{ return b[n-1];
}
public float Sum()
{
for (int i=0;i<n;i++)
{
sum=sum+fenzi()/fenmu();
}
return sum;
}

}上一贴没有把全部代码写出来是怕大家看了头晕,刚学的嘛,写得乱。现在没有办法了。经过数据的转换后,编译器通过了我的代码。但是,运行时候却总得不到正确答案。编译运行如上代码,得到的结果是:
5.0
5.166666666666667我编doing类的思想和main函数里的那个除式是一样的,但是为什么结果却不一样呢??
请各路朋友指点,谢谢!!

解决方案 »

  1.   

    你写的代码总是在 sum=sum+5/3
    改成这样:
       private float fenmu(int n) {        return a[n - 1];
        }    private float fenzi(int n) {        return b[n - 1];
        }    public float Sum() {
            for (int i = 0; i < n; i++) {
                sum = sum + fenzi(i+1) / fenmu(i+1);
            }
            return sum;
        }