Java 创建一个包含两倍元素数的新数组

Java 创建一个包含两倍元素数的新数组,java,arrays,Java,Arrays,我有一个整数数组初始值设定项列表,我想将其长度加倍,但要将相同的元素分配给它,以便我可以计算数组中20的次数。20的第二个频率应为4,而不是0。 我的原始数组为: int num[]={10,20,30,40,20} 我当前的输出是: 20的频率是:2 20的频率为:0 我试过几种不同的方法。我试图通过将第二个数组的长度指定为第一个数组的两倍来创建第二个数组,但这并没有将元素指定给新数组。我试图创建一个长度相同的数组&复制元素,但我不确定是否可以更改第二个数组的长度并保留相同的元素。我将在下面发

我有一个整数数组初始值设定项列表,我想将其长度加倍,但要将相同的元素分配给它,以便我可以计算数组中20的次数。20的第二个频率应为4,而不是0。 我的原始数组为: int num[]={10,20,30,40,20}

我当前的输出是: 20的频率是:2 20的频率为:0

我试过几种不同的方法。我试图通过将第二个数组的长度指定为第一个数组的两倍来创建第二个数组,但这并没有将元素指定给新数组。我试图创建一个长度相同的数组&复制元素,但我不确定是否可以更改第二个数组的长度并保留相同的元素。我将在下面发布我的代码。我知道我可能有一些代码是错误的,但我不知道该怎么做。我确实评论了其中一些。我最初尝试过使用频率法一次,而不是为第二个数组制作副本,但我不知道如何准确地做到这一点

class numCount { 
     //Method to find number of occurrences of x in num[] 
    static int frequency(int num[], int len, int x) 
    { 
        int count = 0; 
        for (int i=0; i < len; i++) 
        if (num[i] == x)  
            count++; 
        return count; 
    }//End frequency
    
    static int frequencyDbl(int newArray[], int lenNew, int y) 
    { 
        int count = 0; 
        for (int i=0; i < lenNew; i++) 
        if (newArray[i] == y)  
            count++; 
        return count; 
    }//End frequencyDbl   
    
      
    // Driver program 
    public static void main (String[] args)
    { 
          
        int num[] = {10, 20, 30, 40, 20};
        int x = 20; 
        int len = num.length;
        System.out.print("The frequence of 20 is :");        
        System.out.println(frequency(num, len, x));       
        
        int [] numDbl;
        numDbl = new int [num.length];//Create array of same length
        //int z=0;
        for (int z=0; z < num.length; z++) {
            numDbl[z] = num[z];//Copy each element of the array
        }
        
        
        int newArray[] = new int[len*2];
        //copy elements of num[] to newArray[]
        
        //for (int i=0; i < num.length; i++)       
            //newArray[] = num[];
        int y = 20;        
        int lenNew = newArray.length;    
        System.out.print("The frequence of 20 is :");        
        System.out.println(frequencyDbl(newArray, lenNew, y)); 
    }//End main 
}//End numCount class 
class numCount{
//方法查找num[]中x的出现次数
静态整数频率(整数[],整数长度,整数x)
{ 
整数计数=0;
对于(int i=0;i
好吧,你的代码看起来不错。但我看不到将数值从num数组复制到newArray的时刻。因为你想把元素翻一番,就像这样,你可以这样做:

    for (int i=0;i<newArray.length; i++) {
           newArray[i] = num[i % len];
    }

for(int i=0;i好吧,您的代码似乎还可以。但是我看不到您将数值从num array复制到newArray的时刻。因为您希望实际将元素加倍,例如A B C A B C,您可以这样做:

    for (int i=0;i<newArray.length; i++) {
           newArray[i] = num[i % len];
    }

for(inti=0;i我不太确定这是否满足您的要求,但这里就是

int[] arr = {1,2,3,4};
现在复制数组并将大小加倍,以保留原始内容

int[] arr1 = Arrays.copyOf(arr, arr.length*2);
System.out.println(Arrays.toString(arr1));
印刷品

[1, 2, 3, 4, 0, 0, 0, 0]
[1, 2, 3, 4, 1, 2, 3, 4]
[1,2,3,4,1,2,3,4]       
现在,如果需要,将原始数组添加到刚刚创建的数组的末尾

System.arraycopy(arr,0,arr1,arr.length,arr.length);
System.out.println(Arrays.toString(arr1));
印刷品

[1, 2, 3, 4, 0, 0, 0, 0]
[1, 2, 3, 4, 1, 2, 3, 4]
[1,2,3,4,1,2,3,4]       
这些在和中进行了解释

下面是如何通过一个简单的循环来实现的

int[] arr = {1,2,3,4};
int[] copy = new int[arr.length*2];
for (int i = 0; i < arr.length; i++) {
     copy[i] = arr[i];
     copy[i+arr.length] = arr[i];
}   

System.out.println(Arrays.toString(copy));

我不确定这是否符合你的要求,但在这里

int[] arr = {1,2,3,4};
现在复制数组并将大小加倍,以保留原始内容

int[] arr1 = Arrays.copyOf(arr, arr.length*2);
System.out.println(Arrays.toString(arr1));
印刷品

[1, 2, 3, 4, 0, 0, 0, 0]
[1, 2, 3, 4, 1, 2, 3, 4]
[1,2,3,4,1,2,3,4]       
现在,如果需要,将原始数组添加到刚刚创建的数组的末尾

System.arraycopy(arr,0,arr1,arr.length,arr.length);
System.out.println(Arrays.toString(arr1));
印刷品

[1, 2, 3, 4, 0, 0, 0, 0]
[1, 2, 3, 4, 1, 2, 3, 4]
[1,2,3,4,1,2,3,4]       
这些在和中进行了解释

下面是如何通过一个简单的循环来实现的

int[] arr = {1,2,3,4};
int[] copy = new int[arr.length*2];
for (int i = 0; i < arr.length; i++) {
     copy[i] = arr[i];
     copy[i+arr.length] = arr[i];
}   

System.out.println(Arrays.toString(copy));

为什么要将数组的长度增加一倍,并使用相同数据的两倍来填充它(如果我没有看错的话)?您试图解决的真正问题是什么?我正在尝试创建第二个数组,该数组中数字20的出现次数是原来的两倍。第二个数组需要有相同的元素,只是增加了一倍。换句话说,第一个数组中数字20出现了两次,所以第二个数组中数字20应该出现4次。这是一个赋值这是我被告知要做的,所以我正在尝试学习如何做。为什么要将数组的长度增加一倍,并用两倍相同的数据填充它(如果我读对了)?您试图解决的真正问题是什么?我正在尝试创建第二个数组,该数组中数字20的出现次数是原来的两倍。第二个数组需要有相同的元素,只是增加了一倍。换句话说,第一个数组中数字20出现了两次,所以第二个数组中数字20应该出现4次。这是一个赋值这是我被告知要做的,所以我正在尝试学习如何做。我尝试的第一件事是创建一个包含两倍多元素的新数组,但这不会将相同的元素分配给新数组。int newArray[]=new int[len*2];我尝试的第二件事是复制具有相同大小和相同元素的数组,只是更改数组的长度,但这也不对。我尝试的第一件事是创建一个包含两倍多元素的新数组,但这不会将相同元素分配给新数组。int newArray[]=new int[len*2];我尝试的第二件事是复制具有相同大小和相同元素的数组,只是更改数组的长度,但这也不对。是的,这基本上就是我要做的。然后我会计算数组中某个数字的次数,我已经有了。似乎有多种方法可以做到这一点,而很高兴知道,我修改了答案,只使用了一个循环,以防你不被允许使用库方法。是的,这基本上就是我要做的。然后我会计算数组中某个数字的次数