当前位置: 首页 > 知识库问答 >
问题:

为二次函数对象定义比较器

申黎明
2023-03-14

这是我的作业,a)编写一个表示具有int系数a、b、c的二次ax^2 bx c的二次函数。为a、b、c提供一个具有3个int参数的构造函数。提供一个方法double valueAt(double x)返回该二次函数在x的值。还提供一个toString方法。

b) 重写equals方法quadraticmethod类。如果两个二次函数各自的系数相等,则应认为它们相等

c) 使功能对象具有可比性。如果相等,则compareTo应首先比较1如果相等,则比较b如果相等,则比较c

d) 定义一个比较器类,用于比较两个QuadraticFunction对象。提供两个构造函数:一个无参数构造函数和一个接受1个双参数的构造函数。当无参数构造函数创建比较器时,它应该根据x=0时的值比较两个二次函数;当构造器使用参数x创建比较器时,它应该基于它们在x处的值来比较quadraticFunction

这是我的密码

我需要D部分的帮助,我不知道怎么做

    public class Ex4
    {
    int a;
    int b;
    int c;

 public Ex4(int x, int y, int z)
 {
    a = x; b=y; c=z;
 }
 public String toString()
 {
    String X="";
    X= X+a+"x^2"+b+"x"+ "+" + c;
    return X;
 }
 public double valueAt(double x)
 {
    return (a*x*x+b*x+c);
 }
 //////// Part B
 public boolean equals( Ex4 qf )
 {
    return(this.a==qf.a && this.b==qf.b && this.c==qf.c);
 }
 /////Part c
//   public int compareTo(Ex4 other)

//   {

//      if (a.equals(other.a))
//      {

//          if (b.equals(other.b))

//              return c.compareTo(other.c);

//          return b.comapreTo(other.b);

//          }

//    return a.compareTo(other.a);

//  }

public int compareTo(Ex4 other)
{
    if (a > other.a)
        return 1;
    else if (a < other.a)
        return -1;
    else if (b > other.b)
        return 1;
    else if (b < other.b)
        return -1;
    else if (c > other.c)
        return 1;
    else if (c < other.c)
        return -1;
    else
        return 0;
}
////Part d

 public static void main(String[] args)
 {
    System.out.println(new Ex3(1, -5, 6));
 }
}

此外,在c部分下的代码区域取消注释中,它表示int不能在第29、31、32、33和35行取消引用,感谢您的帮助

共有3个答案

岑熙云
2023-03-14

试试这个

import java.util.Comparator;
public class Ex4Comparator implements Comparator<Ex4> {
    private double x = 0.0;

    public Ex4Comparator() {
    }

    public Ex4Comparator(double x) {
        this.x = x;
    }

    @Override
    public int compare(Ex4 o1, Ex4 o2) {
        return Double.compare(o1.valueAt(x), o2.valueAt(x));
    }
}

此外,equals方法不会重写对象的equals方法。您可能想将其更改为

@Override
public boolean equals(Object o) {
    if (o instanceof Ex4) {
        Ex4 other = (Ex4)o;
        return (a == other.a && b == other.b && c == other.c);
    }
    return false;
}
景俊拔
2023-03-14

首先,编写自定义比较器并不太难;您需要了解一个的基本结构。

想法是这样的:它读起来有点像你在写一个可比较的实体。

class CustomComparator implements Comparator<Ex4> {

    @Override
    public int compare(Ex4 left, Ex4 right) {
        // Compare the entities as specified by the assignment
    }
}

然后,您需要接受它作为构造函数参数。这是我留给读者的练习。

现在,我们来讨论一下语法问题:您将原语int视为整数,它有一个equals方法。基本体不是对象,因此不能取消引用。您需要使用普通等价运算符(==,

编辑:在重新阅读您的需求后,我开始认为您的原始字段不是正确的方法。您应该:

  • 将字段从int更改为Integer

卓嘉良
2023-03-14

您不能在原语上调用方法,无论是普通的还是简单的。

更好的选择是使用整数的静态方法,Integer.compare(int a, int b)来比较两个整数。

 类似资料:
  • 本文向大家介绍Python3.x中自定义比较函数,包括了Python3.x中自定义比较函数的使用技巧和注意事项,需要的朋友参考一下 在Python3.x的世界里,cmp函数没有了。那么sorted,min,max等需要比较函数作为参数的函数该如何用呢? 以min函数的定义为例,有两种重载形式: 单参数(一个迭代器): 多参数(多个待比较内容): 本文主要讨论key=func参数的使用 。举例说明吧

  • 如果两个集合包含相同的对象,如何进行比较? 当然会打印错误。

  • 如何使用Comparator对对象的ArrayList进行正确排序,然后将排序后的数组传递给自定义数组适配器? 我试过这样做: ArrayList的内容类: 比较器: 在OnCreate中设置适配器: ...因为我使用的是定制的ArrayAdapter,就像: 我需要如何修改此适配器以使其与其他适配器一起工作? 谢谢你的帮助。

  • 我正在尝试创建一个二进制搜索程序,该程序可以使用各种类型的变量(int、float、string等)来查看数组中是否存在元素。我正试图找出如何比较变量。下面是我正在使用的内容的草图: 我甚至不确定使用对象是否是最好的方法。

  • 问题内容: 我必须将对象与预定义类的列表进行比较。 使用安全还是应该使用? 注意: 我不能使用,我没有对象,我只有对象。在这种情况下,我会像枚举一样使用它! 问题答案: 不会覆盖来自的方法,该方法是这样实现的: 因此与(除非为null)相同。

  • ObjectHolder类型的对象中的多用途字段包含对象OBJ。obj可能存储包装的基元或基元数组。如果两个对象是数组,我们如何比较它们?一个简化的例子: