首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java中将数组的一部分作为函数参数传递?

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

Stack Overflow用户
提问于 2014-06-11 17:38:51
回答 3查看 13K关注 0票数 2
代码语言:javascript
运行
复制
#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;
}

输出:3,4,5从第三个元素开始的数组已经在这里传递给了C中的fun()。在JAVA中没有这样的指针,那么如何在JAVA中这样做呢?

作为对下面一条评论的回应,我想添加一些我实际上想要做的事情的细节,因为对于评论部分来说太长了。我只需要递归地访问一个分段(一个数组)。实际上,我试图通过比较两个数组的中间值来找到“两个排序数组的中位数”,方法如下: 1)分别计算输入数组的中介m1和m2,ar1[]和ar2[]。2)如果m1和m2都是相等的,那么我们就完成了。返回m1 (或m2) 3)如果m1大于m2,则中位数出现在以下两个子数组中的一个。( a)从ar1的第一个元素到m1 (ar1 10.\n/2维) b),从m2到ar2的最后一个元素(ar2,n/2,n-1)(如果m2大于m1,则中值在一个元素中。

代码语言:javascript
运行
复制
of the below two subarrays.    a)  From m1 to last element of ar1  (ar1[|_n/2_|...n-1])    b)  From first element of ar2 to m2 (ar2[0...|_n/2_|]) 5) Repeat the above process until size of both the subarrays     becomes 2. 6) If size of the two arrays is 2 then use below formula to get    the median.     Median = (max(ar1[0], ar2[0]) + min(ar1[1], ar2[1]))/2
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-11 17:42:41

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

代码语言:javascript
运行
复制
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]);
    }
}
票数 5
EN

Stack Overflow用户

发布于 2014-06-11 18:31:02

最简单的方法是将开始和结束索引传递给有趣的方法。

代码语言:javascript
运行
复制
public static void main(String args[])
{
    int arr[] = { 1, 2, 3, 4, 5, 6 };
    fun(arr, 2, 5);
}

public static void fun(int a[], int m, int n)
{
    for (int i = m; i < n; i++) {
        System.out.printf("%d ", a[i]);
    }
}

答复:3 4 5

票数 2
EN

Stack Overflow用户

发布于 2014-06-11 18:37:56

因为指针会在程序中引起一些严重的错误或安全问题,所以java不允许您按照C语言手动操作指针。据我所知,您必须复制指针。您可以使用java提供的数组类中的方法,也可以编写自己的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24169216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档