gpt4 book ai didi

java - 实现帮助介绍java

转载 作者:行者123 更新时间:2023-11-29 06:58:41 24 4
gpt4 key购买 nike

我对入门类(class)的实现有疑问。我想出了一个答案,但编译显示“编译错误(第 3 行,第 9 列):可能的精度损失”,我对这种精度损失是什么感到困惑。
我的作业问题如下:回想一下,Person 类实现了 Comparable 接口(interface):

public class Person implements Comparable

现在假设我们要比较员工的薪水。由于 Employee 扩展了 Person,Employee 已经通过 Person compareTo 方法实现了 Comparable,该方法按年龄比较 Person 对象。现在我们要重写 Employee 类中的 compareTo 方法,以便进行薪水比较。

对于此任务,通过为该类实现新的 compareTo 方法来修改 Employee 类。在下面提供的空白处输入适当的代码,如果员工 A 的薪水低于员工 B 的薪水,则员工 A 被视为低于员工 B。此外,如果员工 A 的薪水等于员工 B 的薪水,那么它们应该相等。请记住,您输入的代码位于 Employee 类中。

  /**
* Compares this object with the specified object for order.
* @param o the Object to be compared.
*/
public int compareTo(Object obj)
{

这是我的代码

    double b= ((Employee)obj).getSalary();
double a= this.salary;
return(a-b);
}

这是 Employee 类代码:

class Employee extends Person
{

private double salary;

/**
* constructor with five args.
* @param n the name
* @param ag the age
* @param ht the height
* @param p the phone number
* @param the salary
*/
public Employee(String n, int ag, int ht, String p, double s)
{
super( n, ag, ht, p );
salary = s;
}

/**
* Get the salary.
* @return double the salary.
*/
public double getSalary( )
{
return salary;
}

/**
* Raise the employee's salary by a given percent.
* @param percentRaise
*/
public void raise(double percentRaise)
{
salary *= ( 1 + percentRaise );
}

/**
* Compares this object with the specified object for order.
* @param o the Object to be compared.
*/
public int compareTo(Object obj)
{
/* your code goes here */
}

/**
* get a String representation of the employee's data.
* @return String the representation of the data.
*/
public String toString( )
{
return super.toString( ) + " $" + getSalary( );
}

}

如能帮助我正确回答,我们将不胜感激。我已经研究这个单一问题一个多小时了,那个编译错误让我百思不得其解。谢谢!

最佳答案

问题是 compareTo 方法必须返回一个 int,但是减去工资会产生一个 double。 Java 不允许您在没有转换的情况下将 double 隐式转换为 int。虽然强制转换会使代码编译,但结果可能是错误的。例如,0.4 的差异将被转换为 int 作为 0,错误地报告相等。

您可以测试小于、等于或大于的薪水,并分别返回 -1、0 或 1。您还可以返回调用 Double.compare 的结果, 通过 2 个薪水。

如果您是初学者,那么您可能不知道通常 Comparable interface是通用的,通过提供类型参数来实现。在这种情况下,这回答了“可比于什么?”的问题。 compareTo 方法的参数是通用的,因此采用相同的类型。这也避免了需要在方法主体中将 obj 转换为 Person

public class Person implements Comparable<Person>

public int compareTo(Person obj) 

关于java - 实现帮助介绍java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29660094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com