Java 随机生成特定的数字

Java 随机生成特定的数字,java,random,Java,Random,我想随机生成1-5之间的数字,但关键是它不应该随机生成它的currentFloor。我的问题是从案例2到案例4。在案例2中,它应该随机生成数字1、3、4和5。同样的逻辑适用于案例3和案例4 switch(currentFloor) { //generates number from 2-5 case 1: int destination1 = rand1.nextInt(3) + 2;

我想随机生成1-5之间的数字,但关键是它不应该随机生成它的
currentFloor
。我的问题是从案例2到案例4。在案例2中,它应该随机生成数字1、3、4和5。同样的逻辑适用于案例3和案例4

switch(currentFloor) {
            //generates number from 2-5
            case 1:
                int destination1 = rand1.nextInt(3) + 2;
                destElevator.add(destination1);
                System.out.println(destElevator);
                break;
            case 2:
            case 3:
            case 4:
            //generates number from 1-4
            case 5:
                int destination2 = rand1.nextInt(3) + 1;
                destElevator.add(destination2);
                System.out.println(destElevator);
                break;
        }

生成一个介于1和4之间的数字,如果该数字大于等于currentFloor,则将其增加1。这将适用于所有情况,因此您可以在switch语句之前计算它

int destination = rand1.nextInt(4) + 1;
if (destination >= currentFloor) {
    destination++;
}
destElevator.add(destination)
System.out.println(destElevator);
实际上,从您的代码来看,如果您使用这种策略,您甚至不需要switch语句

int destination = rand1.nextInt(4) + 1;
if (destination >= currentFloor) {
    destination++;
}
destElevator.add(destination)
System.out.println(destElevator);

生成一个介于1和4之间的数字,如果该数字大于等于currentFloor,则将其增加1。这将适用于所有情况,因此您可以在switch语句之前计算它

int destination = rand1.nextInt(4) + 1;
if (destination >= currentFloor) {
    destination++;
}
destElevator.add(destination)
System.out.println(destElevator);
实际上,从您的代码来看,如果您使用这种策略,您甚至不需要switch语句

int destination = rand1.nextInt(4) + 1;
if (destination >= currentFloor) {
    destination++;
}
destElevator.add(destination)
System.out.println(destElevator);

mya,它可能会起作用:-

public int generator(int currentFloor){
    int result = currentFloor;
    while(result == currentFloor){
        result = 1 + (int)(Math.random() * (5 - 1));
    }
    return result;
}

mya,它可能会起作用:-

public int generator(int currentFloor){
    int result = currentFloor;
    while(result == currentFloor){
        result = 1 + (int)(Math.random() * (5 - 1));
    }
    return result;
}

可以使用if语句将随机数与当前楼层进行比较。如果它们相等,则生成另一个随机数,直到它们不相等。可以使用if语句将随机数与当前楼层进行比较。如果它们相等,则生成另一个随机数,直到它们不相等。这似乎是一个不错的选择。我能问一下为什么要在结果中添加一个吗?这可能会使你超出所需的范围,对吗?你忘了施放你的结果,这不会compile@ethancodes:谢谢你的赏识。有许多方法可以在特定范围内生成随机数。一种方法是使用
Min+(Math.random()*(Max-Min))
。有太多好的选择,但我更喜欢这个。为了更好地理解,请访问,您不需要为此进行一段时间的循环!开尔文的答案是正确的。是的,阿明,你是对的。开尔文的答案是一个好办法。所有这些都可以在一个if语句中完成。这似乎是一个不错的选择。我能问一下为什么要在结果中添加一个吗?这可能会使你超出所需的范围,对吗?你忘了施放你的结果,这不会compile@ethancodes:谢谢你的赏识。有许多方法可以在特定范围内生成随机数。一种方法是使用
Min+(Math.random()*(Max-Min))
。有太多好的选择,但我更喜欢这个。为了更好地理解,请访问,您不需要为此进行一段时间的循环!开尔文的答案是正确的。是的,阿明,你是对的。开尔文的答案是一个好办法。所有这些都可以在一个if语句中完成。如果您将nextInt(3)更改为nextInt(4),我认为这是最好的答案。记住,nextInt生成一个介于0(包含)和n(独占)之间的数字。如果您将nextInt(3)更改为nextInt(4),我认为这是最好的答案。请记住,nextInt生成一个介于0(包含)和n(独占)之间的数字。