【问题标题】:Comparable interface homework可比界面作业
【发布时间】:2013-12-09 01:16:02
【问题描述】:

不太了解如何以所要求的方式实现此功能。这是问题

创建一个实现 Comparable 接口的类 Bike。您应该在 Bike 类中具有以下属性、颜色、价格、制造商、型号和评级。您应该根据它们的价格进行比较。使用公差值 0.0001 比较它们。编写一个主驱动程序来测试程序,方法是创建在控制台收集信息的自行车。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Program3 {
public static void main(String[] args) {
    Bike b1 = new Bike(300,"red","schwin","mountain crusher",8.6);
    Bike b2 = new Bike(500,"black","cassio","road dominator",12.5);
    Bike b3 = new Bike(200,"blue","rolex","blue diamond",4.3);
    Bike b4 = new Bike(1524500,"silver","military","spy bike",143.2);

    List<Bike> bike = new ArrayList<Bike>();
    bike.add(b1);
    bike.add(b2);
    bike.add(b3);
    bike.add(b4);


    System.out.println(bike);

    Collections.sort(bike);

    System.out.println(bike);



 public class Bike {
private int price;
private String color,brand,model;
private double rating;

public Bike(int price, String color, String brand, String model, double rating) {
    this.price=price;
    this.color=color;
    this.brand=brand;
    this.model=model;
    this.rating=rating;
}

}

【问题讨论】:

  • 你想让我们怎么做?
  • 只是希望有方向而已
  • 关键字“作业”。我们通常不做你的功课。对不起。
  • 我也不是在问你,但弄清楚如何在任何行业工作的很大一部分是从其他人那里获得建议和帮助,基本技能。向比我知识渊博的人寻求指导并没有错。
  • 如果您不想帮助我理解我的任务,那很好,但请不要无礼。

标签: java comparable compareto


【解决方案1】:

Comparable 接口包含一个方法:compareTo()。此方法返回一个int,描述一个对象与另一个对象的比较情况。

它通常用于对将调用此方法的对象集合进行排序,因为返回的int 的值将告诉调用者这两个对象所属的顺序。

如果compareTo 方法返回负数,则调用该方法的对象位于用作参数的对象之前。如果compareTo 返回正数,则调用该方法的对象位于对象之后。如果compareTo 返回 0,则认为对象相等,顺序无关紧要。

您的作业要求您实现Comparable 并覆盖compareTo 方法,以便按价格对Bike 类的对象进行排序。给定bikeA 的价格为 2 美元,bikeB 的价格为 3 美元,bikeC 的价格为 3 美元:

bikeA.compareTo(bikeB) //should return negative
bikeB.compareTo(bikeA) //should return positive
bikeC.compareTo(bikeB) //should return 0

【讨论】:

  • 我认为他不必执行它们的排序。是吗?
  • 我不知道。他是否必须执行排序并不重要。我只是在评论排序是Comparable 接口存在的原因。
【解决方案2】:

首先,价格应该是双倍,评级应该是整数。看来你搞反了。

但是为了实现compareTo,让我们看看问了什么:

创建一个实现 Comparable 接口的类 Bike。

这很简单:只需将类声明为public class Bike implements Comparable

您应该根据它们的价格进行比较。

所以?如果您在理解 compareTo 方法时遇到困难,这里有一些帮助:

将此对象与指定对象进行比较以进行排序。返回负整数、零或正整数,因为此对象小于、等于或大于指定对象。

这是这个方法应该做什么的官方描述。

使用 0.0001 的容差值比较它们。

在这里您可能需要一些帮助。 double 值不精确,必须与不精确的容差进行比较。例如,表达式0.1 == (0.2 - 0.1) 实际上计算为false,正因为如此。因此,您可以尝试这样的事情:

(0.1 - (0.2 - 0.1)) < 0.0001

这里我们只取差额,看看是否小于一定数量。 0.0001 是公差。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多