Так что я задаю вопрос: могу ли я приравнивать любые два объекта, даже если один из них является объектом, который может быть создан позже? Например: В приведенном ниже кодексе у меня есть класс создания фильма, и все хорошо. У меня нет никаких проблем с этим (его здесь для контекста), реальный вопрос находится в классе Movie Store. Класс Movie Store инициализирует три объекта фильма: Batman, Serenity и Clueless Я хочу написать метод, называемый rentMovie (String title), который при вызове будет проверять, будет ли строка заголовка параметра соответствовать строке заголовка одной из кино. Я знаю, что один из способов сделать это будет:Проверьте, соответствуют ли будущие объекты
if(title.equals("Batman")) //The title being any one of the initialized movies
{
movie1.rentMovie(); //rentMovie() also exists in class Movie and is the actual method which does the calculations
}
однако это было бы взять несколько, если заявления и каждый раз, когда я хотел построить новый фильм в классе MovieStore я должна была бы добавить новую строку кода. Итак, есть ли способ сделать это «глобальным» (без публичного поля), чтобы мне не нужно было указывать конкретное название фильма String для арендыMovie (String title) равным?
Вот класс фильм:
public class Movie
{
private String title;
private int cost;
private int inStock;
private int totalRentals;
public Movie(String title, int cost)
{
this.title = title;
this.cost = cost;
inStock = 5+(int)(Math.random()*((15-5)+1)); //random value in interval [5-15]
totalRentals = 0;
}
public void rentMovie(String title)throws Exception
{
if(this.title.equals(title) && inStock>0)
{
totalRentals++;
inStock--;
}
else if(!this.title.equals(title))
{
throw new Exception("False. movie rented does not match movie given");
}
}
public int getCost()
{
return cost;
}
public int getTotalRentals()
{
return totalRentals;
}
public void printDetails()
{
System.out.println("----------------");
System.out.println("Title:\t\t"+title);
System.out.println("Cost:\t\t"+cost);
System.out.println("In Stock:\t"+inStock);
System.out.println("Rented:\t\t"+totalRentals);
System.out.println("----------------");
}
}
Вот класс магазин фильм: (я оставил, если заявление по существу неполными, потому что я в недоумении о том, что делать здесь)
public class MovieStore
{
private Movie movie1;
private Movie movie2;
private Movie movie3;
public MovieStore()
{
movie1 = new Movie("Batman",3);
movie2 = new Movie("Clueless",5);
movie3 = new Movie("Serenity",4);
}
public void rentMovie(String title)
{
if(title.equals())
{
//not sure what to put here.rentMovie(title);
// there is a bit of a redundacy check here because of Movie class rentMovie() method
//but I NEED to check the movie titles for equality here first that way I'm sure that rentMovie()
//from Movie class will run.
System.out.println("YES"); //used this just to check if what I was doing was working
}
}
public void printDetails()
{
movie1.printDetails();
movie2.printDetails();
movie3.printDetails();
int total = (movie1.getCost()*movie1.getTotalRentals())+(movie2.getCost()*movie2.getTotalRentals())+(movie3.getCost()*movie3.getTotalRentals());
System.out.println(" Total Revenues for Rentals were: " + "$"+total);
}
}
Почему сниппетов бегунов? – ChiefTwoPencils
Ahh новый для форумов, я думаю, он просто добавил их автоматически. – Scymantic
Прочитайте, что делает класс 'HashMap'. Убедитесь, что вы это поняли. Затем сделайте это так, как описывает @MJSG. Это именно то, для чего нужны «HashMap» (и подобные классы). –