繁体   English   中英

如何获取、返回和删除数组中的随机元素?

[英]How to get, return and delete a random element in an array?

如何从数组中获取、返回和删除随机元素以及最有效的方法? 数组代码如下所示:

String arr[3] = {"Cat", "Dog", "Mouse", "Horse"};

谢谢你的帮助。

编辑

顺便说一下,这是一个记忆游戏,所以如果它重复两次以上,我会毁了游戏。

您可以使用 % 运算符在数组中创建随机索引。使用 Math.random 获取小数随机数并使用它创建随机索引,如下所示

String[] arr = {"Cat", "Dog", "Mouse", "Horse"};
    int randPos = ((int)(Math.random()*1000))%arr.length;
    String randEl = arr[randPos];
    System.out.println(randEl);

您不能删除数组的元素。 您所能做的就是将其设置为 null

你可以做 :

 String[] datas = new String[3];
 Random rand = new Random();
 rand.setSeed(System.currentTimeMillis());

 int i = rand.nextInt(datas.length);
 String val = datas[i];
 datas[i] = null;
 return val;

获取字符串

Random r = new Random();
String arr[3] = {"Cat", "Dog", "Mouse", "Horse"};
String selectedString = arr[r.nextInt(arr.length)];

对于返回,从方法中返回String selectedString

删除

Random r = new Random();
String arr[3] = {"Cat", "Dog", "Mouse", "Horse"};
arr[r.nextInt(arr.length)] = null

请注意,这不会移动array元素,也不会减少array的长度。

如果您需要这种功能,我建议使用像Arraylist这样的Collection

您基本上无法从数组中删除元素。

请按照以下步骤操作:

  1. 将您的数组转换为 ArrayList

List<String> list = new ArrayList<String>(Arrays.asList(arr));

  1. 获取索引的串联数

int randPos = ((int)(Math.random()*1000))%arr.length;

  1. 删除该索引处的元素

list.remove(randPos);

  1. 将其转换回字符串数组

arr = list.toArray(new String[0]);

希望这可以帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM