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

passing the result of a void function to a double function

我正在尝试在 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] 您的 merged 密码已损坏。它不会在第二个和第三个 while 循环中递增 k

[2] 就……叫它:

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

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

通常你会写一个 returns int[] 的方法,并让 merged 方法 make 该数组。您的标题实际上是一个矛盾修饰法:根据定义,void 函数没有 return 任何东西。您已经做出了创造性的选择,选择了一种修改其参数之一的方法。有用;这不完全是一种现代编码风格。