如何在java中将部分数组作为函数参数传递?

use*_*841 2 java arrays function argument-passing

#include<stdio.h>
void fun(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)       
        printf("%d ",a[i]); 
}

int main()
{
    int arr[]={1,2,3,4,5,6};
    fun(arr+2,3);       
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:3 4 5从第3个元素开始的数组已经传递到C中的fun().如果在JAVA中没有这样的指针,在JAVA中如何做同样的事情?

在回答下面的一条评论时,我想添加我实际上要做的事情的细节,因为评论部分太长了.我需要递归地访问一个数组的子节.实际上我试图通过比较两个数组的中位数来找到"两个排序数组的中位数",使用以下算法:1)分别计算输入数组ar1 []和ar2 []的中位数m1和m2.2)如果m1和m2都相等,那么我们就完成了.返回m1(或m2)3)如果m1大于m2,则中值存在于以下两个子阵列之一中.a)从ar1的第一个元素到m1(ar1 [0 ... | n/2 |])b)从m2到ar2的最后一个元素(ar2 [| n/2 | ... n-1])4)如果m2大于m1,则中值存在于
以下两个子阵列之一中.a)从m1到ar1的最后一个元素(ar1 [| n/2 | ... n-1])b)从ar2的第一个元素到m2(ar2 [0 ... | n/2 |])5)重复上述过程,直到两个子阵列的大小变为2. 6)如果两个数组的大小为2,则使用下面的公式来获得中位数.中位数=(max(ar1 [0],ar2 [0])+ min(ar1 [1],ar2 [1]))/ 2

Chr*_*ian 5

如果您不修改数组,可以使用以下命令创建范围的副本Arrays.copyOfRange(int\[\] original, int from, int to):

import java.util.Arrays;
...
public static void main(String args[])
{
    int arr[] = { 1, 2, 3, 4, 5, 6 };
    fun(Arrays.copyOfRange(arr, 2, arr.length), 3);
}

public static void fun(int a[], int n)
{
    for (int i = 0; i < n; i++) {
        System.out.printf("%d ", a[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)