Сегодня я работаю над новой программой, чтобы найти самую дешевую пиццу в файле, полном данных. Я полностью застрял в одном вопросе, но использует метод compareTo. Я создал его в своем классе ресурсов, но я не получаю ошибок, говоря, что двойник не может быть разыменован, я посмотрел этот вопрос и до сих пор не получил никакой помощи. Я не самый продвинутый программист и не понимаю многих сложных ответов на другие ресурсы. Мои спецификации для программы следующие:compareTo Method with Doubles [Double не может быть разыменован]
B. CheapPizza.java a. Цель - реализовать интерфейс Comparable в Pizza.java. b. Назначение. Используйте файл Pizza.java, который вы скопировали в Главу 10. Внесите сопоставимый интерфейс и добавьте метод compareTo(). Этот compareTo() следует использовать , чтобы помочь вам найти самую дешевую пиццу в файле pizza.txt. Напишите клиентский класс CheapPizza.java, чтобы протестировать новую версию Pizza.java. CheapPizza будет прочитал в пицце из файла и будет отслеживать самую дешевую пиццу, используя метод сравнения compareTo(). Создайте объект Pizza для хранения самой дешевой пиццы и объекта Pizza , чтобы прочитать в пицце из файла. Используйте compareTo(), чтобы сравнить самую дешевую пиццу с пиццей , прочитанной из файла. Если пицца, прочитанная из файла, дешевле, замените самую дешевую пиццу . a. Вход - файл pizzas.txt на доске. b. Выход - должен появиться именно в формате показано ниже: Самый дешевый пиццы: 9-дюймовый оливкового пицца будет стоить $ 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' с примитивами,' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. Просто сравните их напрямую, например. 'this.cost
GriffeyDog
Спасибо за информацию! –