一个令我迷惑的数据类型的问题?

sheeling 2003-10-15 04:22:43
程序代码如下:
import java.io.*;

public class outfloat
{
public static void main(String[] args)
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
Double d;
String s;
System.out.println("please enter a double data...");
try
{
s=in.readLine();
d=Double.parseDouble(s);
int point=s.indexOf(".");
System.out.println(d+"d的整数部分:"+(long)d);
if(point==-1)
{
System.out.println(d+"小数为:0.0");
}
else
{
System.out.println(d+"小数部分为:"+Double.parseDouble((s.charAt(0)=='-')?"-":"")+"0."+s.substring(point+1,s.length()));
}

}catch(IOException e)
{
System.out.println(e);
}catch(NumberFormatException e)
{System.out.println("format error"+e);}


}
}
编译时出现如下错误提示:
D:\j2sdk\j2sdk1.4.2\bin>javac outfloat.java
outfloat.java:47: incompatible types
found : double
required: java.lang.Double
d=Double.parseDouble(s);
^
outfloat.java:49: inconvertible types
found : java.lang.Double
required: long
System.out.println(d+"d的整数部分:"+(long)d);

请问这有错吗?为什么会出现这样的错误?

^
...全文
33 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sheeling 2003-10-16
  • 打赏
  • 举报
回复
Double.parseDouble((s.charAt(0)=='-')?"-":"")这句的意思判断是否是一个带“-”的整数
fft123 2003-10-15
  • 打赏
  • 举报
回复
to 楼主:
你这句话里的“Double.parseDouble((s.charAt(0)=='-')?"-":"")”是干吗的?
起什么作用?
System.out.println(d+"小数部分为:"+Double.parseDouble((s.charAt(0)=='-')?"-":"")+"0."+s.substring(point+1,s.length()));

加上这句话,运行反而会报错
不加是对的
fft123 2003-10-15
  • 打赏
  • 举报
回复
parseDouble返回的是double类型的数据,而不是你用Double类定义的实例
注意大小写
把Double d;改成double d;就可以了
danceflash 2003-10-15
  • 打赏
  • 举报
回复
Double d;
String s;

这里,你的d被定义为一个Double对象
而 Double.parseDouble(s) 返回的是一个基本类型 double
所以,把
Double d;
改成:
double d;
就可以了

第二个报错原理相似

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧