2016-03-15 4 views
0

Итак, у меня есть этот текстовый файл, в котором перечислены фильмы и актеры в них, которые нужно настроить на графике так, чтобы вы могли связать актеров с тем, кто был в каждом фильме (пример : Джош Бролин-> Ян Маккеллан Джош Бролин был в Пустоте с Кевином Бэконом, который был в «Аполлоне-13» с Томом Хэнксом, который был в коде DaVinci с Яном Маккелленом). Проблема, с которой я столкнулась, связана с тем, как форматируется txt-файл.Чтение .txt в график Java

Apollo13 Кевин Бэкон Том Хэнкс Синиз
HollowMan Элизабет Шу Кевин Бэйкон Джош Бролин
AFewGoodMen Том Круз Деми Мур Джек Николсон Кевин Бэйкон
OneCrazySummer Джон Кьюсак Деми Мур
DaVinciCode Том Хэнкс Иан МакКеллен Одри Тоту

Как вы можете видеть, каждый фильм - одно слово, но каждый актер - это два слова. Может ли кто-нибудь помочь мне прочитать это в структуре графика? Кажется, я не могу придумать достойный способ сделать это.

+0

Текстовый файл все в одной строке? Тогда нет возможности сделать это автоматически. – Henry

+0

@ Gladdstone Взгляните на мое решение. – user3437460

+0

Извините, только что заметил, что текст не форматируется должным образом. Исправлена. Мне сложно придумать метод. проблема заключается в том, чтобы расщепить линию правильно таким образом, что я получаю только фильм, то и имена актера, и имена следующего актера и т. д. – Gladdstone

ответ

1

Как вы можете видеть, каждый фильм - одно слово, но каждый актер - это два слова. Может ли кто-нибудь помочь мне прочитать это в структуре графика? Кажется, я не могу придумать достойный способ сделать это

Число слов не является проблемой. Все, что вам нужно, это определить разделитель, который не будет отображаться в их именах, таких как двоеточие :.

Пример (для хранения, как TXT):

Movie Title1: Actor 1 : Actor 2: Actor 3 
Movie Title2: Actor 2 : Actor 4 
Movie Title3: Actor 3 : Actor 5 
Movie Title3: Actor 5 

// The first delimited token will always be your movie name, followed by actor names. 

Для создания графика в Java, считывать данные из файла, который может быть легко достигнуто с помощью String.split(":") и читать их в данных структура объектов.

Вы можете использовать LinkedList или просто читать их как 2D массива:

 Movie1 Movie2 Movie3 Movie4 
Actor1 O   X   X   X 
Actor2 O   O   X   X 
Actor3 O   X   O   X 
Actor4 X   O   X   X 
Actor5 X   X   O   O 

Вы можете, конечно, сохранить его в качестве int с 0s и 1s или 2D массив boolean с true и false. С этим вы можете получить различные комбинации и отношения фильмов и актеров.

Например, чтобы проверить, является ли Actor5 участие в Movie2:

return (graph[4][1]); //Actor5 corresponds to row4, Movie2 to col1 
+0

Это хорошая идея, к сожалению, я не могу изменить текстовый файл , – Gladdstone

+0

@ Gladdstone. Это всегда так, когда имена фильмов будут однословными, а имена актеров будут двойными словами? – user3437460

+0

Да, в фильме всегда будет одно слово, за которым следует хотя бы один актер, который всегда будет двумя словами. – Gladdstone

Смежные вопросы