请java大佬解惑!关于类set和get方法的问题。

心外无物王阳明 2018-07-03 12:21:21
各位大佬:
我新建了一个类,里面生成了get和set方法。但是set方法我传进了一个double值0.69,用get方法取出的double值竟然是1.0,这是为什么啊?
类一(铁类)代码为:public class iron
{

private double count;
private double fePpm;
private double siPpm;
private double price;
public double getCount()
{
return count;
}


public void setCount(double count)
{
this.count = count;
}


public double getFePpm()
{
return fePpm;
}


public void setFePpm(double fePpm)
{
this.fePpm = fePpm;
}


public double getSiPpm()
{
return siPpm;
}


public void setSiPpm(double siPpm)
{
this.siPpm = siPpm;
}


public double getPrice()
{
return price;
}


public void setPrice(double price)
{
this.price = price;
}

public double getTotalPrice(double price,double count)
{
return price*count;

}
public iron()
{
count=1;
fePpm=0;
siPpm=0;
price=0;
}

}
主类:
//获取铁矿石种类
int feKind=Integer.parseInt(GameCore.input("2", "请输入有几类铁矿石(请输入3以下正整数)"));
//生成铁矿石数组,长度为用户输入的铁矿石种类数feKind
iron[] iron1=new iron[feKind];
//获取没类铁矿石的铁含量、硅含量、价格、数量
//因为调试原因,所以设置了很多变量,其实没必要
for(int i =0;i<iron1.length;i++ )
{
iron1[i]=new iron();
String a,b,c,d;
a=GameCore.input("0.58" ,"请输入铁矿石"+(i+1)+"的铁含量");
b=GameCore.input("0.38" ,"请输入铁矿石"+(i+1)+"的硅含量");
c=GameCore.input("650" ,"请输入铁矿石"+(i+1)+"的价格");
d=GameCore.input("1" ,"请输入铁矿石"+(i+1)+"的数量");
System.out.println("您输入的铁含量是"+a);
double e=Double.parseDouble(a);
double f=Double.parseDouble(b);
double g=Double.parseDouble(c);
double k=Double.parseDouble(d);
iron1[i].setFePpm(e);
iron1[i].setFePpm(f);
iron1[i].setFePpm(g);
iron1[i].setFePpm(k);
System.out.println("经过转换后的铁含量是"+e);
System.out.println("最终输出的铁含量是"+iron1[i].getFePpm());
//gamecore是如鹏网开发的教学用游戏引擎,功能很简单
//最后输出竟然是1.0.......
...全文
396 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshiwo13021 2018-07-14
  • 打赏
  • 举报
回复
不要用Double,不精确,用int类型,1就代表%1,其他的自己处理一下就好了
  • 打赏
  • 举报
回复
感谢各位大佬的解惑,我去试试
  • 打赏
  • 举报
回复
java中字面数字都是int型,在编译过程中,你的小数如果没有后缀d或者f,会变成整数。
所以你set进去的就是1(int),设置给double类型的,会自动转换类型,变成double的1.0
可以在数字0.69后面加上d变成0.69d来解决这个问题
weixin_41378799 2018-07-05
  • 打赏
  • 举报
回复
试试 Double.valueOf(String s): Returns a Double object holding the double value represented by the argument string s.
反派大叔 2018-07-04
  • 打赏
  • 举报
回复
正常的set和get是没问题
1,查下GameCore.input返回的是什么值
2,Double.parseDouble()方法返回的是什么值
看数据有没有在这些地方被修改

23,404

社区成员

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

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