日期:2014-05-20  浏览次数:20714 次

菜鸟求解习题,关于toString()的
Java code
class CRectanglej{
    protected int length;
    protected int width;
    public String toString(){//错误在这里,Exception in thread "main" java.lang.Error: 无法解析的编译问题:
    此方法必须返回 String 类型的结果。下面的程序哪里不返回,String类型?
        //String l="length";
        //return l;
        int a=length;
        int b=width;
        if(a>=b)
             return toString();//难道这里返回的不是String类型?
        else
            System.out.println("Argument Error");
            
        
    }
    CRectanglej(int l,int w){
        length=l;
        width=w;
    }
}
public class p_229_17 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        CRectanglej rect=new CRectanglej(2,6);
        System.out.println("length= "+rect.length+"width="+rect.width+"area="+rect.length*rect.width);
        System.out.println(rect.toString());
        // TODO 自动生成方法存根

    }

}


新手不清楚,请高手解答。

------解决方案--------------------
toString()是个方法,不是数据类型.
而且参数合不合适,也不要在这判断。

可以在toString()里这样就行:
Java code
 public String toString(){
             return "矩形长为"+length+"  矩形宽为 "+width;
            }

------解决方案--------------------
else分支中也要有返回值的,且if分支中如果a>b则是死循环。
------解决方案--------------------
问题原因:因为public String toString() 方法要求返回一个字符串类 如果a 小于 b 他就不会执行 return toString(); 而该方法又没有其他的return 
解决方法:添加一个return null;

This method must return a result of type String 此方法必须返回一个String类型的结果
问题确实够菜的