class Abs
{
static int abs(int iNum)
{
if(iNum>=0)
   return iNum;
else
   return (-iNum);
}
static float abs(float fNum)
{
if(fNum>=0.0)
   return fNum;
else
   return (-fNum);
}
}class ex_4_15
{
public static void main(String args[])
{
int iN=-2;
float fN=1.5000;
System.out.println("absolute value of "+iN+" is  "+Abs.abs(iN));
System.out.println("absolute value of "+fN+" is  "+Abs.abs(fN));
}
}就这么一小段程序,是演示重载的,可是编译是提示最后一句输出语句有了问题,这个float型的重载不了,天天见到重载自以为比较清楚了,今天才知道,居然连这个都....... 哪个好心人帮帮吧,谢谢了!!鞠躬......................

解决方案 »

  1.   

    float fN=1.5000;===>float fN=1.5000f;
    改后至少在我这里没有任何问题的.这个重载并没有错.
      

  2.   

    回复人: f_acme(沧海一声笑) ( ) 信誉:100  2005-11-16 07:16:00  得分: 0  
     
     
       float fN=1.5000;===>float fN=1.5000f;
    改后至少在我这里没有任何问题的.这个重载并没有错.
      
     
    -----------------------
    我也试了,就是这个问题?
      

  3.   

    不加f也可以,是数据精度的问题,你把float改为double  ,就没有问题了 !
      

  4.   

    楼上说的是什么意思呢?float型的是4个字节,double的是8个字节,那为什么是double的就不用后缀了呢?是不是可以这样理解:对于加了小数点的数, 就默认是double型的,要表示float的就一定要加f才可以呢??
      

  5.   

    class Abs
    {
    static int abs(int iNum)
    {
    if(iNum>=0)
       return iNum;
    else
       return (-iNum);
    }
    static float abs(float fNum)
    {
    if(fNum>=0.0)
       return fNum;
    else
       return (-fNum);
    }
    }class ex_4_15
    {
    public static void main(String args[])
    {
    int iN=-2;
    float fN=1.5000f;
    System.out.println("absolute value of "+iN+" is  "+Abs.abs(iN));
    System.out.println("absolute value of "+fN+" is  "+Abs.abs(fN));
    }
    }加了个f
    执行ok
    哥们儿,给点分