2017-12-02 95 views
0

我有一個包含對象Movie的數組「movieScedule」。在這個(電影)對象中,我有票的價格。如何創建已存在的另一種方法(java)的新對象

現在我想創建,展示了最昂貴的張電影票 製備方法的方法:

public Movie mostExpensive() 
{ 
.... 
.... 
.... 
} 

現在我想創造這個方法 內新的電影對象,然後循環運行遍及陣列 在電影,然後另一個用於循環從索引0遍佈電影運行,並通過使用getMoviePrice()方法

在端檢查每個電影的價格,我想聲明我內部此創建的對象的電影方法爲高est moviePrice 然後返回(電影)

任何想法?也許有更好的方法?

+0

聽起來像個好主意 - 去爲它吧! – alfasin

+0

我不知道如何去做這就是問題嘿嘿 –

+0

歡迎來到Stackoverflow,請閱讀[如何問](https://stackoverflow.com/help/how-to-ask)。請特別注意[如何創建MCVE](https://stackoverflow.com/help/mcve)。您將付出更多努力發佈一個好問題:一個容易閱讀,理解和[主題](https://stackoverflow.com/help/on-topic) - 的機會更高會吸引相關人員,你會得到更快的幫助。祝你好運! – alfasin

回答

1

所以,我認爲,你有一個電影類,像這樣:

class Movie { 
    private Double moviePrice; 

} 

任何你想找到的最高價格,而不是電影的最高價格。

Movie mostExpensive() { 
    Movie mostExpensiveMovie = null; 

    for(Movie movie: movieScedule){ 
    if(mostExpensiveMovie == null || //use for the first element 
     movie.getMoviePrice() > mostExpensiveMovie .getMoviePrice(){ // compare previous film price with current one 
     mostExpensiveMovie = movie; 
    } 
    } 
    return mostExpensiveMovie ; // return most expensive movi 
    } 

這樣會更便宜,無需創建新的Movie實例。 如果你願意,這也可以通過java8流實現,檢查this stack post

Optional<Movie> mostExpensiveMovie = Arrays.stream(movieScedule) 
.max(Comparator.comparing(Movie::getTicketPrice)); 
0

很難正確理解你的問題。希望這是你想要的。一個簡單的方法來獲得最昂貴的門票將是:

ArrayList<Movie> movies = new ArrayList<>(); 
//populate array list 

public Movie getMostExpensiveTicket(ArrayList<Movie> movies){ 
    Movie mostExpensive = movies.get(0); // not null save 
    for(Movie movie : movies){ 
     if(movie.getMoviePrice() > mostExpensive.getMoviePrice()) mostExpensive = movie; 
    } 
    return mostExpensive; 
} 
+0

貝里更快,他的答案是空的保存。所以請使用他的方法。 – OmnomnomTee

0

如果您使用的是Java 8或以上,我會建議服用Java流的優勢。它看起來像這樣:

public static Movie mostExpesive(Movie[] MoviesSchedule) { 
    Optional<Movie> maxPriceMovie = Stream.of(MoviesSchedule) 
      .collect(Collectors.maxBy((a, b) -> a.price - b.price)); 
    return maxPriceMovie.get(); 
} 
相關問題