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 自动生成方法存根 }}新手不清楚,请高手解答。

解决方案 »

  1.   

    toString()是个方法,不是数据类型.
    而且参数合不合适,也不要在这判断。可以在toString()里这样就行:
     public String toString(){
                 return "矩形长为"+length+"  矩形宽为 "+width;
                }
      

  2.   

    else分支中也要有返回值的,且if分支中如果a>b则是死循环。
      

  3.   

    问题原因:因为public String toString() 方法要求返回一个字符串类  如果a 小于 b 他就不会执行  return toString();    而该方法又没有其他的return 
    解决方法:添加一个return null;This method must return a result of type String 此方法必须返回一个String类型的结果
    问题确实够菜的