首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从二维数组中随机选择

从二维数组中随机选择
EN

Stack Overflow用户
提问于 2018-06-01 19:45:11
回答 1查看 79关注 0票数 0

我正在尝试在Android Studio中创建一个基本的测验应用程序,但我对此仍然相当陌生,不确定使用什么术语来搜索解决方案。希望这里有人能帮上忙。

用户可以从一系列主题、项目或两者的组合中进行选择,以定义他们的测验。一旦他们完成了选择,它就会被随机化,他们的测验就开始了。

主题和项目是相关的,但没有显式地联系在一起。例如,用户可以只选择一个主题行,这将提供与该主题相关的每个项目。或者,他们可以选择单列项目,这将提供与该项目相关的每个主题。

我的假设是,这必须通过XML中的二维数组来实现,like this picture.中的绿色单元格是选中的项,红色单元格是未选中的项。然后在java中操作数组。

我知道如何创建2D数组,但我没有足够的经验来确定这是正确的决定。我也不确定如何操作它。我应该接受用户的选择并使用它来创建一个新的数组吗?或者,我可以保留原始数组,将数字随机化,跳过未选中的数字吗?

如果有人能给我指出正确的方向,或者提出更好的解决方案,我将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 00:05:02

下面的代码似乎可以完成您想要对所选答案的二维数组中的所选项目执行的操作。就我的评论建议为这些信息创建一个列表,这可能是也可能不是最好的选择,因为它是主观的。

让我们使用您已经想到的东西(因为您说您已经知道如何为所选项目创建2D数组),但接下来让我们将您的数组转换为ArrayList,因为我确实觉得它们提供了更好的结构。

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Collectors;

String[][] twoDimentionalArrayOfEverything = { 
        {"item1", "item2", "item3"}, 
        {"item4", "item5", "item6"}, 
        {"item7", "item8", "item9"} };

ArrayList<String> selectedItemsForQuiz = 
   Arrays.stream(twoDimentionalArrayOfEverything)
    .flatMap(a -> Arrays.stream(a))
    //filter selected items
    .filter(b->b.equals("item1") || b.equals("item9") )
    //now turn to a collection
    .collect(Collectors.toCollection(() -> new ArrayList<String>()));

    //loop the list
    selectedItemsForQuiz.forEach(System.out::println);  //item1 and item9 

这是一个使用整数值而不是字符串的版本

代码语言:javascript
复制
Integer[][] answerNumbers = { 
            {1, 2, 3}, 
            {4, 5, 6}, 
            {7, 8, 9} };

ArrayList<Integer> selectedItemsNumber = Arrays.stream(answerNumbers)
       .flatMap(a -> Arrays.stream(a))
        //filter selected items
        .filter(b->b.equals(1) || b.equals(9) )
        //now turn to a collection
       .collect(Collectors.toCollection(() -> new ArrayList<>()));

selectedItemsNumber.forEach(System.out::println);  //1 and 9 

然后,既然您声明要随机化选择,那么混洗应该可以在Java Collections中工作:

代码语言:javascript
复制
Collections.shuffle(selectedItemsForQuiz);  //Strings
Collections.shuffle(selectedItemsNumber);  //Integers
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50642703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档