2015-01-16 36 views
0

相当新的Java编程,并在最近建立了一个应用程序,需要从影片的标题的用户输入,图书或歌(单选按钮)并打印到一个文本文件像这样:文件排序 - 项目类型 - Java的

Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39 
Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51 
Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M 
Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06 
Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13 
Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28 

于是,我问什么是我该怎么办排序电影,音乐或书籍中的文本文件?

我想是可以的,只要程序结束(我使用JFrame的JPanel的,并在UI)它可播放电影,那么音乐,然后将图书分类成一个列表。

我想不仅有实际的答案代码样本也于它的教程和它是如何工作。

+0

我有一些这方面的经验,没有什么专业或广泛的。将它们保存为单独的文件会更容易吗? – Kalkrin

+0

从[Trail:Collections](http://docs.oracle.com/javase/tutorial/collections/)和['Collections']开始(http://docs.oracle.com/javase/7/docs/api /java/util/Collections.html),查找'sort'方法和['Comparator'](http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html) – MadProgrammer

回答

0

好了,你可以创建3个不同的类,一个是电影,一本用于书本,一本用于歌曲。

public class Movies throws Exception { 
String title; 
Date date; 
public Movie(String title, Date date){ 
this.title = title; 
this.date = date; 
} 

public class Book throws Exception { 
String title; 
String author; 
Date date; 
public Book(String title,String author, Date date){ //constructor of Book 
this.title = title; 
this.author = author; 
this.date = date; 
} 

而且这首歌和这本书一样。

当你在实时执行应用程序时,你可以在他们来的时候打印东西(就像在你的例子中一样),但是同时在linkedLists或者它自己的数组中注册它们(Movie []] MOVS,书书[]等):

Movie mov[] = new Movie[2000]; 
int n = 0; 
//the app begins 
System.out.println(INFOMovie) //this is the method you use to print the information of a movie(supposed thing) 
mov[n] = INFOMovie.title ,INFOMovie.date); 
//and so on 

,当应用程序完成后,退出之前,做一个排序方法首先读取所有的电影,然后是书籍,然后将歌曲,使它们显得按照您想要的顺序在JPanel上。像这样: int n = 0;

while(n!= mov.length){ 
System.out.println(mov[n].toString); //the toString method is a method you can have in your classes where you make a string with all the info you want to have about that class (this time, the movie one). 
} 
n=0; 
while(n!=bok.length){ 
System.out.println(mov[n].toString); 
} 

等等。

我想我已经理解了你有的问题,如果我没有,让我知道它我会改变我的答案,以便它可以适合你的问题。另外,如果你不知道我的答案的任何部分,请说出来,我会更好地解释它。

另外,MadProgrammer做的非常好。如果您有任何问题,请提问。

2

所以,我问的是如何根据电影,音乐或书籍在文本文件中排序?

从本质上讲,你不知道。将值加载到内存中,将它们排序并将其保存回文件。

List<String> values = new ArrayList<String>(25); 
values.add("Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39"); 
values.add("Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51)"); 
values.add("Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M"); 
values.add("Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06"); 
values.add("Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13"); 
values.add("Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28");  

Collections.sort(values, new Comparator<String>() { 
    @Override 
    public int compare(String o1, String o2) { 
     String t1 = o1.substring(0, o1.indexOf(" ")).trim(); 
     String t2 = o2.substring(0, o2.indexOf(" ")).trim(); 
     return t1.compareTo(t2); 
    } 
}); 

for (String value : values) { 
    System.out.println(value); 
} 

,输出...

Book Title: Alan Turing: The Enigma Date & Time: 01/15/2015 08:53:05M 
Movie Title: The Imitation Game Date & Time: 01/15/2015 08:52:39 
Movie Title: Rear Window Date & Time: 01/15/2015 08:54:28 
Music Title: Fly For Your Life Artist: Gunship Date & Time: 01/15/2015 08:52:51) 
Music Title: Adagio For Tron Artist: Daft Punk Date & Time: 01/15/2015 08:54:06 
Music Title: Bad Wings Artist: The Glitch Mob Date & Time: 01/15/2015 08:54:13 

这简直是使用String S的“自然”排列元素的,如果你想更复杂的东西进行排序,你必须为它编写规则的Comparator

compare方法内的Collections看看,寻找sort方法和Comparator更多细节

你可以...

保持在它自己的List每种类型和保存它们按顺序或有自己的文件中...

你可以...

使用Map的某种保持样组合在一起的物品......

Map<String, List<String>> mapItems = new HashMap<>(); 
map.put("Music", new ArrayList<String>(25)); 

map.get("Music").add("The Imitation Game Date & Time: 01/15/2015 08:52:39"); 
//... 

看看Trail: Collections了解更多详情。

你可以...

硬着头皮试试你的手在使用某种类型的数据库,有一些简单的,单用户的数据库中获得,H2例如,这是一个纯Java数据库。看看JDBC Database Access了解更多详细信息...

无论如何,我会鼓励你设计一个基类或接口来维护基本信息(标题和时间戳的外观),然后创建专业类,比如Music/Book/Movie从它延伸。这将在长期内使管理更容易,因为信息是它自己的容器类型的概念内维持(和允许每个类型的专门化)