【问题标题】:Randomly Generating Sentences for Display随机生成句子进行展示
【发布时间】:2011-09-24 10:47:16
【问题描述】:

我有几个关于我正在设计的应用程序的问题。我可以尝试许多不同的路线来获得我想要的东西,但我认为我会得到建议而不是反复试验。

我正在开发一个简单的应用程序,它有一个游戏屏幕(活动)和一个用于启动游戏的主菜单。游戏画面将有两个按钮,“下一个”和“重复”。每次点击“下一个”时,都会出现一个不同语言的新句子(下面有英文翻译),音频会发音,希望我能得到一个荧光笔来突出句子中所说的部分。你可以猜到重复按钮的作用。

我的问题是,你们认为存储这些句子以便随机挑选它们的最佳方式是什么?我考虑过在每个结构中使用英语定义、音频和句子制作一组结构或类。然后使用随机迭代器挑出一个。但是,这样做需要很长时间,我想在尝试之前获得一些想法。

另外,我不确定如何在屏幕上打印句子和定义。

谢谢!

【问题讨论】:

  • 随机迭代器?只需选择一个随机整数。对象数组似乎是一个完美的解决方案。

标签: android arrays random next


【解决方案1】:

坦率地说,我会从Project Gutenberg 中加载版权书籍,然后随机从中提取句子。然后我会将这些句子传递到 Google API 中以翻译和发音这些句子。依赖外部服务是 Android 等互联操作系统的核心所在。与像 CD 一样的罐装 Rosetta Stone 解决方案相比,该平台的使用更具吸引力,并且您利用更广泛内容的能力将成倍增加。

【讨论】:

  • 用于发音的 Google API 文档在哪里?它能发音中文吗?因为如果没有什么可以为我做到这一点,我将不得不自己记录每一个句子。 (100+)
【解决方案2】:

使用结构/类数组似乎是正常的方法。

不太清楚随机迭代器是什么意思,但在从句子数组中挑选随机句子时,您可能希望在遍历所有元素之前避免重复。为此,您可以创建第二个索引数组,从中随机选择一个,使用与该索引对应的元素,然后从索引数组中删除该数字。

在 Java 中,这看起来像

ArrayList<Sentence> sentences;
ArrayList<Integer> indices;
Random rand;

private void populateIndices() {
    for(int i = 0; i < sentences.size(); i++)
        indices.add(i);
}

public Sentence getNextSentence() {
    if(indices.isEmpty())
        populateIndices();
    int idx = rand.nextInt(indices.size());
    int val = indices.get(idx);
    indices.remove(idx);
    return sentences.get(val);
}

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    相关资源
    最近更新 更多