【问题标题】:random array android from string来自字符串的随机数组android
【发布时间】:2020-01-12 06:53:36
【问题描述】:

我想将我的数组的数字随机分配给键 key0、key1 等 ..

我正在使用这段代码,在前两行中我有我的数组,并使用 setText 我分配了数字。但我无法让它工作..

            String[] shuffledKeys = {"0","1","2","3","4","5","6","7","8","9"};

        Random random = new Random(); // or create a static random field...
        String randString = shuffledKeys[random.nextInt(shuffledKeys.length)];

        key0.setText(shuffledKeys.get(0));
        key1.setText(shuffledKeys.get(0));
        key2.setText(shuffledKeys.get(0));
        key3.setText(shuffledKeys.get(0));
        key4.setText(shuffledKeys.get(0));
        key5.setText(shuffledKeys.get(0));
        key6.setText(shuffledKeys.get(0));
        key7.setText(shuffledKeys.get(9));
        key8.setText(shuffledKeys.get(8));
        key9.setText(shuffledKeys.get(9));

【问题讨论】:

  • 什么是不工作或正在发生什么你不想发生的行为?
  • 实际上它只是不起作用,这意味着我以这种方式分配 0,0,0,0,0,0,9,9,9 而不是随机的..

标签: android arrays random text


【解决方案1】:
String[] keys = {"0","1","2","3","4","5","6","7","8","9"};

Set<String> addedKeys = new HashSet<String>();
List<String> shuffledKeys = new ArrayList<String>();

Random random = new Random();

while (shuffledKeys.size() < keys.length) {
  int index = Math.abs(random.nextInt() % keys.length);
  if (!addedKeys.contains(keys[index])) {
    addedKeys.add(keys[index]);
    shuffledKeys.add(keys[index]);
  }
}

/// Shuffled keys should now actually be "shuffled"

key0.setText(shuffledKeys.get(0));
key1.setText(shuffledKeys.get(1));
key2.setText(shuffledKeys.get(2));
key3.setText(shuffledKeys.get(3));
key4.setText(shuffledKeys.get(4));
key5.setText(shuffledKeys.get(5));
key6.setText(shuffledKeys.get(6));
key7.setText(shuffledKeys.get(7));
key8.setText(shuffledKeys.get(8));
key9.setText(shuffledKeys.get(9));

【讨论】:

  • 好的,崩溃已修复,但我的号码始终以相同的方式填充。都还是按顺序分配的
  • 您在代码中反复执行shuffledKeys.get(0)。如果你让它们增加它应该可以解决你的问题....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多