price1和price2相差小于1时Double判断不准

price1和price2相差小于1时Double判断不准

原文int n = new Double(price2 - price1).intValue();

是要怎么写?这样吗?

int n = new BigDecimal(price2 - price1).intValue();

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

同学你好~~

这个jdk9不支持包装类实例化,但是不影响使用,不影响学习,

目前市场上还是以jdk8为主。

如果我的回答解决了你的疑惑,欢迎采纳,祝学习愉快~~


初一 2019-05-06 10:54:15

 同学你好~

这个方法可以这样写下:

   @Override

    public int compareTo(Goods o) {

    BigDecimal price1=new BigDecimal(new Double(this.getPrice()).toString());

    BigDecimal price2=new BigDecimal(new Double(o.getPrice()).toString());

    BigDecimal num=price1.subtract(price2);

    int n=num.compareTo(BigDecimal.ZERO);//判断num和0的大小,大于0返回1,小于0返回-1,等于0返回0

     

        return n;

    }

如果解决了你的疑惑,请采纳,祝学习愉快~~


  • 提问者 慕哥5118177 #1
    谢谢,Double上还是有横线“The constructor Double(double) is deprecated since version 9”
    2019-05-07 19:06:59
提问者 慕哥5118177 2019-05-05 19:35:39

视频中到下面一段时,

红字提示:注意,当price1和price2的差小于1时,n=0因此可以根据需求做下一步判断。

而且,Double是编译器划线的,之前问过,回复是java9以后已经不用这个构造函数了。

那现在该怎么写这一段,又要没横线,又可以规避红字提示的内容。

@Override
public int compareTo(Goods o) {
double price1 = this.getPrice();
double price2 = o.getPrice();
int n = new Double(price2 - price1).intValue();
return n;
}

package sort;

import java.math.BigDecimal;

public class Goods implements Comparable<Goods> {
	private String id;// 商品编号
	private String name;// 商品名称
	private double price;// 商品价格

	public Goods(String id, String name, double price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getPrice() {
		return price;
	}

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

	public String toString() {
		return "商品编号:" + id + ",商品名称:" + name + ",商品价格:" + price;
	}

	@Override
	public int compareTo(Goods o) {
		double price1 = this.getPrice();
		double price2 = o.getPrice();
		int n = new Double(price2 - price1).intValue();
		return n;
	}
}


初一 2019-05-05 11:01:47

同学你好~

返回类型与Comparable.compareTo(Goods)不兼容,

实现int compareTo(Goods)

该方法比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

请同学按照以上修改一下,如果还是没有解决,请贴一下你的代码,以及报错的截图,以便于老师更准确的回答你的问题,也请同学以后遇到需要调试的代码,贴一下你的代码(代码不要贴截图),以及报错的截图  注意不要贴在回复里,会失去代码的格式。可以在“我要回答”里贴一下。

方法的重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和参数个数和参数类型都必须相同不能改变。

如果解决了你的疑惑,请采纳,祝学习愉快~~


  • 提问者 慕哥5118177 #1
    已在“我的回答”贴了
    2019-05-06 10:31:30
吃吃吃鱼的猫 2019-05-04 16:38:38

同学你好,可以使用如下所示方法使用BigDecimal对象。

 BigDecimal price1=new BigDecimal(this.getPrice().toString());
 BigDecimal price2=new BigDecimal(o.getPrice().toString());
 BigDecimal n=price1.subtract(price2);

为了老师能够高效的解决,跟踪同学的问题,建议同学同一个问题只创建一个问答哦~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕哥5118177 #1
    @Override public BigDecimal compareTo(Goods o) { BigDecimal price1 = new BigDecimal(this.getPrice().toString()); BigDecimal price2 = new BigDecimal(o.getPrice().toString()); BigDecimal n = price1.subtract(price2); return n; } 之前的price变量全部改成BigDecimal类型了。 在BigDecimal上有红色波浪线: Multiple markers at this line - The return type is incompatible with Comparable<Goods>.compareTo(Goods) - implements java.lang.Comparable<sort.Goods>.compareTo
    2019-05-04 19:28:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师