将 void 函数的结果传递给 double 函数

Posted

技术标签:

【中文标题】将 void 函数的结果传递给 double 函数【英文标题】:passing the result of a void function to a double function 【发布时间】:2021-12-27 00:00:54 【问题描述】:

我正在尝试在 void 函数“merged”中合并两个排序数组,然后将合并后的数组从该函数传递给“findMedianSortedArray”以找到该合并数组的中位数。

我无法弄清楚如何执行此操作,并且已通过 google 用尽了我的搜索。我怎么能做到这一点?感谢您的帮助。

代码如下

class Solution 
    public double findMedianSortedArrays(int[] nums1, int[] nums2) 
        int[] mergedArr = new int[nums1.length+nums2.length];
        double median;
        
        if(mergedArr.length %2 == 0 )
            median = (mergedArr[mergedArr.length/2]+ mergedArr[mergedArr.length/2 - 1] ) /2;
        else
            median = mergedArr[mergedArr.length/2];
        
        
        return median;
    
    
    private void merged(int[] nums1, int[] nums2, int[] mergedArr)
        int i = 0;
        int j = 0;
        int k = 0;
       
        while(i < nums1.length && j < nums2.length)
            if(nums1[i]< nums2[j])
                mergedArr[k] = nums1[i];
                i++;
            else
                mergedArr[k] = nums2[j];
                j++;
            
            k++;
        
        while(i < nums1.length )
            mergedArr[k] = nums1[i];
            i++;
            j++;
        
        while(j < nums2.length )
            mergedArr[k] = nums2[j];
            i++;
            j++;
            
        
    
        

【问题讨论】:

【参考方案1】:

[1] 您的merged 代码已损坏。它不会在第二个和第三个while 循环中增加k

[2] 就……叫它吧:

int[] mergedArr = new int[nums1.length+nums2.length];
merged(nums1, nums2, mergedArr);

第一行创建了一个新数组,其中还没有任何内容(全为零)。第二行调用 merged 方法,将所有 3 个数组传递给它。 merged 方法的工作方式是设置第三个数组的值。哪个是你的mergedArr,所以一旦merged 返回,它就会有你想要的。

通常您会改为编写一个返回int[] 的方法,并使用merged 方法制作该数组。您的标题实际上是矛盾的:根据定义,void 函数不返回任何内容。您已经选择了具有修改其参数之一的方法的创造性选择。有用;这不完全是一种现代编码风格。

【讨论】:

感谢您解决这个问题。经过反思,我过度思考了这一点。

以上是关于将 void 函数的结果传递给 double 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将 void* 的引用从 C++/CLI 传递给本机 C 函数

设计一个函数,对传递给他的double型数值进行四舍五入后作为int型值返回。

无法将 json 值传递给函数

如何将网格传递给“void my_func(void * args)”

将c ++引用的地址传递给指针

将二维数组传递给 double function_name 时出错