在Java中从arraylist中重复选择和删除随机项

在Java中从arraylist中重复选择和删除随机项,java,Java,编写一个程序,反复选择和删除一个随机入口 来自arraylist。直到数组不再容纳任何条目 我很难在这里重复它。因为每次arraylist位置都是随机的。当随机数为0时,我还需要边大小写。 无论如何,下面是我的代码。那么怎么做呢 import java.util.ArrayList; import java.util.Random; public class R3_1 { public ArrayList<String> cars = new ArrayList<St

编写一个程序,反复选择和删除一个随机入口 来自arraylist。直到数组不再容纳任何条目

我很难在这里重复它。因为每次arraylist位置都是随机的。当随机数为0时,我还需要边大小写。
无论如何,下面是我的代码。那么怎么做呢

import java.util.ArrayList;
import java.util.Random;

public class R3_1 {
    public ArrayList<String> cars = new ArrayList<String>();
    {cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");}


    public String  removeentry() {

        int size = cars.size();
        Random rn = new Random();
        int a  = rn.nextInt(size) ;


        System.out.println(cars.get(a));
        cars.remove(a);

        a = a-1;
        System.out.println(cars.get(a));
        cars.remove(a);
        
        a = a-1;
        System.out.println(cars.get(a));
        cars.remove(a);

        System.out.println(cars.get(a));
        cars.remove(a);
        return "done";
    }
}

 
import java.util.ArrayList;
导入java.util.Random;
公共类R3_1{
public ArrayList cars=new ArrayList();
{cars.add(“沃尔沃”);
加上(“宝马”);
汽车。添加(“福特”);
汽车。添加(“马自达”);}
公共字符串removentry(){
int size=cars.size();
Random rn=新的Random();
int a=rn.nextInt(尺寸);
System.out.println(cars.get(a));
车辆。移除(a);
a=a-1;
System.out.println(cars.get(a));
车辆。移除(a);
a=a-1;
System.out.println(cars.get(a));
车辆。移除(a);
System.out.println(cars.get(a));
车辆。移除(a);
返回“完成”;
}
}

我建议使用
while
循环,在给定新列表大小的情况下,您每次都会询问新的随机值

public String removeentry() {
    Random rn = new Random();
    int a;
    String removed;
    while (!cars.isEmpty()) {
        a = rn.nextInt(cars.size());
        removed = cars.remove(a);
        System.out.println(removed);
    }
    return "done";
}
也可以使用
for
循环

public String removeentry() {
    Random rn = new Random();
    int a;
    String removed;
    for (int i = cars.size(); i > 0; i--) {
        a = rn.nextInt(i);
        removed = cars.remove(a);
        System.out.println(removed);
    }
    return "done";
}

我建议使用
while
循环,根据新列表的大小,每次都会询问新的随机值

public String removeentry() {
    Random rn = new Random();
    int a;
    String removed;
    while (!cars.isEmpty()) {
        a = rn.nextInt(cars.size());
        removed = cars.remove(a);
        System.out.println(removed);
    }
    return "done";
}
也可以使用
for
循环

public String removeentry() {
    Random rn = new Random();
    int a;
    String removed;
    for (int i = cars.size(); i > 0; i--) {
        a = rn.nextInt(i);
        removed = cars.remove(a);
        System.out.println(removed);
    }
    return "done";
}
公共字符串removentries(){
随机=新随机();
整数大小,a;
//执行,直到列表为空(因此'cars.size()==0`)
而((size=cars.size())>0){
//选择随机索引
a=随机。nextInt(大小);
//输出对象
System.out.println(cars.get(a));
//从列表中删除对象
车辆。移除(a);
}
返回“完成”;
}
公共字符串删除入口(){
随机=新随机();
整数大小,a;
//执行,直到列表为空(因此'cars.size()==0`)
而((size=cars.size())>0){
//选择随机索引
a=随机。nextInt(大小);
//输出对象
System.out.println(cars.get(a));
//从列表中删除对象
车辆。移除(a);
}
返回“完成”;
}

使用
for
循环。当数组列表不为空时,使用
for
循环
长度
次。在循环体中,选择一个介于0和数组当前长度之间的随机数。删除指定的索引。完成。使用
for
循环。当数组列表不为空时,使用
for
循环
长度
次。在循环体中,选择一个介于0和数组当前长度之间的随机数。删除指定的索引。完成。