A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© che201311 中级黑马   /  2013-11-23 21:35  /  1691 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Circle {
double r;
public Circle(double r)
{
this.r=r;
}
public String toString()
{
double area=r*r*Math.PI;
return" "+area;
}

}
返回一个值时为什么不能写  return area;   要加上" "+area

????

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 下次代码要放代码框里哦、不然没有技术的!.

查看全部评分

7 个回复

倒序浏览
因为你的toString()方法有返回值(String类型),而你的area是double类型的,“” +就是把后面的也变成字符串
回复 使用道具 举报 1 0
toString()方法的返回值是String类型的,而area是double类型的,所以不能直接返回area,需要将写成""+area
回复 使用道具 举报
area是double类型  area+""就转成了String类型,这在打印时比较常见
回复 使用道具 举报
定义了返回值类型是String,而area是double类型。
“ ”+area  中,+是连接符,将后面area类型转成字符串型然后连接起来
回复 使用道具 举报
因为 toString 返回的是String 字符串类型,double是八种基本数据类型之一,当然不能直接返回;
而 基本数据类型--转换--字符串有两种方式:
第一种就是  " "+基本数据类型值
  1. public String toString()
  2. {
  3. double area=r*r*Math.PI;
  4. return" "+area;
  5. }
复制代码
第二种就是  String中的静态方法valueOf();
  1. public String toString()
  2. {
  3. double area=r*r*Math.PI;
  4. return String.valueOf(area);
  5. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
卢泽 中级黑马 2013-11-24 15:01:43
7#
对于这个问题,我觉得应该想清楚两个,定义的参数是什么类型?要返回的类型是什么?明白这两个,这个问题就解决了。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励分+1

查看全部评分

回复 使用道具 举报
首先,public String toString()该方法的返回值是String类型的,而你定义的变量area是基本数据类型double,如果想要返回你想要的结果area,你必须将area变成String类型的,
return " "+area;这句代码中" "连接上area后,area类型被提升至String。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马