2015-02-05 162 views
-1

我需要導入一個文件,並讓掃描儀只打印列表中的電影。電影總是在該行的第一句話,總是格式化爲使得它們將出現在括號中的標題,然後一年:如何只打印符合某些條件的文件中的行?

拯救大兵瑞恩(1998)

繼電影標題將會有一個/然後是一個演員姓名格式,如姓氏,名字,然後是另一個斜線,然後是下一個演員的名字。當電影的演員全部被列出時,該行結束並且下一行中的另一部電影發生相同的事情。

我該如何製作一個代碼,列出所有與他們中的某個演員有關的電影,列出某個電影的所有演員,列出所有電影(沒有演員),列出所有發佈的電影某一年等等?

+3

你嘗試過什麼分裂電影了?你遇到什麼問題,需要幫助?或者你只是想找人幫你做作業? – ivantod 2015-02-05 18:14:56

+0

我會解析文件到一個'Map >'。 Java中有大量的工具,可以讓你操作集合,不過你喜歡。 – azurefrog 2015-02-05 18:22:56

+0

我不想找人做我的作業我只是在正確的方向尋找點頭。我會使用.matches(正則表達式)製作電影的數組列表,只添加與「單詞」(數字)格式相匹配的電影,但當我要求它打印出所有具有這些條件的電影時,我懷疑這是因爲它只看單詞。我不知道如何讓它通過整條線看,只挑選出電影片名的部分,然後用括號括起來。 – 2015-02-05 18:30:22

回答

0

你可以做這樣的事情:

ArrayList<String> allMovies = new ArrayList<String>(); 

    for (String movie : allMovies) 
    { 
     if (movie.contains("Tom Hanks")) 
      System.out.println(movie); 
    } 

,或者如果你想獲得更具體的每一個你的電影,你可以分解成多個不同的類別(片名,演員,年)用split()

String[] arr = movie.split("/"); 

編輯:

對不起,我以爲你在名單有你的電影,但這個想法仍然是相同的。您想要遍歷掃描儀中的每部電影,並且它包含要打印出來的匹配短語。事情是這樣的:

while (scanner.hasNext()) 
{ 
    String movie = scanner.next(); 
    //split the movie by "/" 
    String[] arr = movie.split("/"); 
    //if movie contains phrase, print it out 
    if (movie.contains("Tom Hanks")) 
    { 
     //print out title 
     System.out.println(arr[0]); 
    } 
} 

或像我之前提到的,你可以用斜槓

+0

請注意,我是初學者,所以我試着運行該代碼,但它什麼都沒做。我把它放在掃描儀中。 – 2015-02-05 18:47:06

+0

我將如何納入分裂的事情。我已經有一個打印theScanner.next()的類firstName,所以我怎樣才能讓firstName.split(「/」)工作? – 2015-02-05 18:54:52

+0

Drop27可以很好地工作,但是因爲我必須將它放到scanner.nextLine()。contains(「Tom Hanks」)中,所以它會打印出包括演員在內的整個行。我怎樣才能做到這一點,所以它只打印每行的第一個單詞,直到它到達一個開放的括號? – 2015-02-05 19:02:04

相關問題