如何在Android中随机生成的数组中匹配正确答案?

如何在Android中随机生成的数组中匹配正确答案?,android,arrays,random,Android,Arrays,Random,因此,我正在创建一个谜语应用程序,当你在屏幕上滑动时,它会出现一个谜语,该谜语是使用数组随机生成的。现在我不知道哪个谜语会弹出,因为它当然是随机的,但我希望用户能够点击并按住随机生成的谜语,然后答案会弹出,取代谜语。到目前为止,我已经完成了数组,它将随机生成一个谜语,但我在获得与谜语匹配的答案时遇到了一个问题。我如何在文本视图的长按上将正确答案与随机数组进行匹配 我确实看到了另外两个问题(,)以及与此类似的问题,但它没有回答我的问题,而且确实不具体。 final TextView answerT

因此,我正在创建一个谜语应用程序,当你在屏幕上滑动时,它会出现一个谜语,该谜语是使用数组随机生成的。现在我不知道哪个谜语会弹出,因为它当然是随机的,但我希望用户能够点击并按住随机生成的谜语,然后答案会弹出,取代谜语。到目前为止,我已经完成了数组,它将随机生成一个谜语,但我在获得与谜语匹配的答案时遇到了一个问题。我如何在文本视图的长按上将正确答案与随机数组进行匹配

我确实看到了另外两个问题(,)以及与此类似的问题,但它没有回答我的问题,而且确实不具体。

final TextView answerTxt = (TextView) findViewById(R.id.answerTxt);


    //List with the riddles and its values
    HashMap<String, String> h = new Hashmap<String, String>();
    h.put("a", "v");
    h.put("b", "w");
    h.put("c", "x");
    h.put("d", "y");
    h.put("e", "z");

    //rand generator for array
    String[] yourKeyList = h.keySet().toArray(new String[]{});

    String[] yourValueList = h.values().toArray(new String[]{});

    String randomKey = yourKeyList[new Random().nextInt(yourKeyList.length)];

    final String keyValue = yourValueList[yourValueList.length];



    answerTxt.setText(randomKey);

    answerTxt.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            answerTxt.setText(keyValue);
            return true;
        }
    });
final TextView answerTxt=(TextView)findViewById(R.id.answerTxt);
//列出谜语及其值
HashMap h=新的HashMap();
h、 放置(“a”、“v”);
h、 付诸表决(“b”、“w”);
h、 放置(“c”、“x”);
h、 付诸表决(“d”、“y”);
h、 放置(“e”、“z”);
//阵列随机数发生器
字符串[]yourKeyList=h.keySet().toArray(新字符串[]{});
字符串[]yourValueList=h.values().toArray(新字符串[]{});
String randomKey=yourKeyList[new Random().nextInt(yourKeyList.length)];
最终字符串keyValue=yourValueList[yourValueList.length];
answerTxt.setText(随机键);
answerTxt.setOnLongClickListener(新视图。OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图v){
answerTxt.setText(键值);
返回true;
}
});

谜语数组和答案数组应该链接起来。当谜语出现时,你应该知道选择了什么索引,然后用它作为答案的索引

我建议您使用hashmap,而不是字符串的arraylist。hashmap的基本格式如下所示:

HashMap h <String, String> = new Hashmap<String, String>();
h.put("riddle", "answer");
h.put("riddle", "answer");
h.put("riddle", "answer");
h.put("riddle", "answer");
h.put("riddle", "answer");
给你。要获取随机哈希映射,可以执行以下操作:

String randomValue = (String) values[(new Random).nextInt(value.length)]; 
这将在hashmap的范围内获取一个随机值:

String randomRiddle=h[randomValue]

做这件事,再联系我,告诉我事情进展如何。

这不是答案,实际上是答案。OP说答案也是随机的,这显然不是真的。看看这个问题的另一个答案,那是一个答案。我肯定知道hashmap是如何回答我的问题的,但我如何只调用键(随机)而不是该键的实际值。然后,当用户点击该键时,它将显示该键的值。我试着寻找方法来做这件事,因为在你说之前我实际上不知道hashmap是什么,但我找到的方法几乎列出了所有的键,其他我不熟悉的方法。我对Android开发还比较陌生,但正如我所说的,我确实觉得这就是我需要让它工作的地方。@Mac这对你来说是一个非常酷的学习体验,尤其是如果你以前从未使用过地图,那么地图就非常有用了!为了随机获取密钥,请执行以下操作:
String[]yourKeyList=h.keySet().toArray();String randomKey=yourKeyList[new Random().nextInt(yourKeyList.length)]
上面的这段代码基本上以一个随机数作为索引来生成一个随机键。我们从hashmap中获取所有密钥,将其放入数组列表中,然后获取一个随机密钥。回复此评论,让我知道它是否有效!因此,只要尝试上面的代码,它就可以完美地工作。现在我只需要在用户单击并按住键时显示键值的帮助。到目前为止,这是我必须尝试使其工作的代码(问题中已更新),但不幸的是,当我进入活动时,应用程序不断崩溃。@Mac-Yay,它工作了!请接受答案(绿色复选标记),以便其他有相同问题的人可以使用我的answer@Mac关于您的第二个问题:当它崩溃时,您会遇到什么错误?粘贴日志。
String randomRiddle=h[randomValue]