2011-06-28 18 views
0

即时制作一个Java移动应用程序来显示人们的报价。它将有超过18000个报价,按人物和报价分类。我的应用程序的用户将输入该人的人员编号和报价编号。 (两个单独的数字)。我应该使用嵌套开关的情况下还是if else语句?还是有另一种方法来做到这一点?也许不是每个报价字符串,使用引号(每人1个文本文件)的文本文件n使用一个开关的情况下,让人ñgoto线路号码。该人的文本文件的文件?哪一种方法会更快速地移动它正在运行的移动设备?提前致谢! :)java-18000多个案例,我应该使用switch还是if语句?

+9

你有没有想过使用数据库? – forsvarir

+1

尝试使用字典类。如果你有限制不使用数据库 –

回答

1

您可以加载点播报价文件和缓存他们的报价在同一个会话中使用,例如:

public class Quotes { 
    Hashtable cache; 

    public Quotes() { 
     cache = new Hashtable(); 
    } 

    public String getQuote(int person, int quoteNumber) { 
     if (!cache.containsKey(new Integer(person))) { 
      try { 
       loadQuoteFile(person); 
      } catch (IOException e) { 
       // Invalid person/file - do what you will 
      } 
     } 

     String[] quotes = (String[])cache.get(new Integer(person)); 
     if (quoteNumber < 0) return quotes[0]; 
     if (quoteNumber >= quotes.length) return quotes[quotes.length - 1]; 
     return quotes[quoteNumber]; 
    } 

    private void loadQuoteFile(int person) throws IOException { 
     String[] quotes; 
     // Load the file 
     // Parse into strings using linebreaks as the delimiter 
     cache.put(new Integer(person), quotes); 
    } 
} 

你可能需要的文本文件的做法,无论如何,除非你是热衷于写作或为包含所有报价数据的类生成代码 - 例如一个String[][],人名和报价编号为索引,另一个String []包含人名 - 如果您有足够的内存可用,这是另一种选择。从这样的结构中获取特定的引用仅仅是使用给定的数字asarray索引(随着执行范围的变化而变化)。

+0

谢谢大家哟!这已经有很多帮助!我不想要数据库..文件n缓存方法听起来很完美! '将在我得到它工作后立即在这里发布..非常感谢你..:D – pinky

3

都没有。

请使用数据库!如果你有数字(id!),你可以通过索引快速找到这种报价。

+0

是的,Java-ME上不存在传统的关系型数据库(因为这个问题被标记)... – funkybro

+0

你是否在暗示if-per-quote?请说你不知道。使用基于文件的数据库会限制你索引的可能性,当然,但仍然WAY更好,那么假设/切换 – Nanne

7

切换,但这不是最好的方法。 你应该使用一个数据库,但如果你不与comforable编写程序来创建每个人的文件,然后列出报价,如这里britneyspears.txt

克里斯蒂娜和我是朋友,不管媒体所构成的。

不要把我当成一个小女孩。

英格兰是我最喜欢的地方之一。粉丝们太疯狂了。

每天晚上,我都要读一本书,这样我的思想才会停止思考我所强调的事情。

让程序从目录和列表名称中查找文件,然后可以将文件加载并拆分为字符串。尽管使用数据库更可取,但速度要快得多。