将某个数字移动到数组的前面(Java)

将某个数字移动到数组的前面(Java),java,arrays,Java,Arrays,我需要一个代码的帮助,在这个代码中,我必须使用一个随机数字数组将数字“7”放在数组的前面。我使用Math.random生成每个索引中的随机数。在这些索引中的任何一个中,都可以生成数字7 import java.util.Arrays; public class NumberShifter { public static int[] Array(){ int[] array = new int[20]; int max = 10; in

我需要一个代码的帮助,在这个代码中,我必须使用一个随机数字数组将数字“7”放在数组的前面。我使用Math.random生成每个索引中的随机数。在这些索引中的任何一个中,都可以生成数字7

import java.util.Arrays;

public class NumberShifter {

    public static int[] Array(){
        int[] array = new int[20];
        int max = 10; 
        int min = 1; 
        int rand = 0;
        int range = max - min +1;

        for(int t = 0;t<=array.length-1;t++) {
              rand = (int)(Math.random() * range) + min; 
            array[t] = rand;
        }



    return array;

    }
}
导入java.util.array;
公共类数字换档器{
公共静态int[]数组(){
int[]数组=新的int[20];
int max=10;
int min=1;
int rand=0;
整数范围=最大-最小+1;

对于(int t=0;t迭代数组中的元素,如果它们是
7
则在数组的开头将它们与下一个元素交换,使用另一个变量跟踪下一个
索引进行交换

int index = 0;
for (int i = 0; i < array.length; i++) {
    if (array[i] == 7) {
        int tmp = array[i]; // actually not needed, we know it's 7
        array[i] = array[index];
        array[index] = tmp; // or just 7
        index++;
    }
}
int索引=0;
for(int i=0;i
实际上,我会从末尾开始,把前面的座位留给七人

公共静态int[]数组(){ int[]数组=新的int[20]; int max=10; int min=1; int rand=0; 整数范围=最大-最小+1; int sevensGoHere=0; for(int t=array.length-1;t>=sevensGoHere;){ rand=(int)(Math.random()*范围)+min; 如果(兰德==7){ 数组[sevensGoHere++]=rand; } 否则{ 数组[t--]=rand; } } 返回数组; }

通过动态操作,您不需要重新排列数组。

如果math.rand不生成7,会发生什么?@C2H50H最终会生成。@NiVeR这不是重点。该代码可以很好地生成没有出现7的序列,因此C2H50H的问题是合法的。您可以在数组中运行并标记所有7所在的位置ed然后将7交换到数组的前面。查看@FedericoklezCulloca确实,我是在讽刺:)如果第一个元素是7,实际上有不必要的复制操作。如果
array[index],交换操作是否是一个好主意!=7
但还是要增加索引吗?@Steyrix当然可以。不过,我不想让它变得过于复杂。而且对运行时间的影响也很小。这是我尝试过的方法!我就是想不出来。谢谢。