如何只打印符合某些条件的文件中的行?

如何只打印符合某些条件的文件中的行?

问题描述:

我需要导入一个文件,并让扫描仪只打印列表中的电影。电影总是在该行的第一句话,总是格式化为使得它们将出现在括号中的标题,然后一年:如何只打印符合某些条件的文件中的行?

拯救大兵瑞恩(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

你可以做这样的事情:

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