今天我正在开发一个新程序,用于在一个充满数据的文件中找到最便宜的披萨。然而,我完全卡在了一个问题上,就是使用compareTo方法。我在我的资源类中创建了它,但是我收到了错误消息,说double不能被取消引用,我查看了这个问题,但还是没有得到帮助。我不是最高级的程序员,也不理解其他资源上的许多复杂答案。我的程序规格如下:
B. CheapPizza.java a. 目标 - 在Pizza.java中实现Comparable接口。 b. 分配 - 使用您复制到第10章中的Pizza.java文件。实现Comparable接口并添加compareTo()方法。这个compareTo()应该用来帮助你在pizza.txt中找到最便宜的披萨。编写CheapPizza.java客户端类来测试Pizza.java的新版本。CheapPizza将从文件中读取披萨,并通过使用compareTo()方法来跟踪最便宜的披萨。创建一个Pizza对象来保存最便宜的披萨和一个Pizza对象来从文件中读取披萨。使用compareTo()来比较最便宜的披萨和从文件中读取的披萨。如果从文件中读取的披萨更便宜,则更改最便宜的披萨。 a. 输入 - Blackboard上的pizzas.txt文件。 b. 输出 - 应该完全按照下面的格式显示: The cheapest pizza: The 9 inch olive pizza will cost $7.99
compareTo方法的代码在我的代码底部,请有人能给我解释一下我做错了什么吗?谢谢你的时间,祝你有愉快的一天!~
B. CheapPizza.java a. 目标 - 在Pizza.java中实现Comparable接口。 b. 分配 - 使用您复制到第10章中的Pizza.java文件。实现Comparable接口并添加compareTo()方法。这个compareTo()应该用来帮助你在pizza.txt中找到最便宜的披萨。编写CheapPizza.java客户端类来测试Pizza.java的新版本。CheapPizza将从文件中读取披萨,并通过使用compareTo()方法来跟踪最便宜的披萨。创建一个Pizza对象来保存最便宜的披萨和一个Pizza对象来从文件中读取披萨。使用compareTo()来比较最便宜的披萨和从文件中读取的披萨。如果从文件中读取的披萨更便宜,则更改最便宜的披萨。 a. 输入 - Blackboard上的pizzas.txt文件。 b. 输出 - 应该完全按照下面的格式显示: The cheapest pizza: The 9 inch olive pizza will cost $7.99
compareTo方法的代码在我的代码底部,请有人能给我解释一下我做错了什么吗?谢谢你的时间,祝你有愉快的一天!~
public class Pizza {
private int size;
private double cost;
private String topping;
public Pizza(int s, double c, String t)
{
size = s;
cost = c;
topping = t;
}
public Pizza(String t, int s, double c) //.equals Method For Comparing Pizza for ''PizzaMatch''
{
topping = t;
size = s;
cost = c;
}
public Pizza()
{
size = 10;
cost = 9.00;
topping = "Cheese";
}
public String toString()
{
return String.format("%d inch %s pizza will cost $%.2f", size, topping, cost);
}
public int getSize()
{
return size;
}
public void setSize(int s)
{
size = s;
}
public double getCost()
{
return cost;
}
public void setCost(Double c)
{
cost = c;
}
public String getTopping()
{
return topping;
}
public void setTopping(String t)
{
topping = t;
}
public boolean equals(Object obj) //.equals Method For Comparing Pizza in "PizzaMatch"
{
if(!(obj instanceof Pizza))
throw new IllegalArgumentException("Parameter must be of Pizza!");
Pizza temp = (Pizza) obj;
if (this.topping.equals(temp.topping) && this.size == temp.size && this.cost == temp.cost)
return true;
else
return false;
}
//============================================================================================
public int compareTo(Object obj){
if(!(obj instanceof Pizza))
throw new IllegalArgumentException
("Parameter must be a Pizza");
Pizza temp = (Pizza) obj;
if (this.cost.compareTo(temp.cost) < 0) //this comes 1st
return -1;
else if(this.cost.compareTo(temp.cost) > 0) //temp comes 1st
return 1;
else //this and temp are equal
return 0;
}
}
compareTo
,因为double
是原始类型。 直接进行比较,例如this.cost < temp.cost
。 - GriffeyDog