Java 错误:不兼容的类型:尝试合并两个已排序数组时,无法将int[]转换为int
尝试将两个已排序的数组合并在一起,但我收到一个错误: 错误:不兼容的类型:int[]无法转换为int 我做了一些研究,但我真的不明白为什么会发生这种情况。我知道我的程序在排序数组方面有问题,但我不确定修复方法是什么 这是我的密码:Java 错误:不兼容的类型:尝试合并两个已排序数组时,无法将int[]转换为int,java,Java,尝试将两个已排序的数组合并在一起,但我收到一个错误: 错误:不兼容的类型:int[]无法转换为int 我做了一些研究,但我真的不明白为什么会发生这种情况。我知道我的程序在排序数组方面有问题,但我不确定修复方法是什么 这是我的密码: public class MedianOfTwoSortedArrays { //[1,2],{3,4} static int[] nums1 = new int[]{1, 3}; static int[] nums2 = new in
public class MedianOfTwoSortedArrays
{
//[1,2],{3,4}
static int[] nums1 = new int[]{1, 3};
static int[] nums2 = new int[]{2};
public static void main(String args[])
{
System.out.println(findMedianSortedArrays(nums1, nums2));
}
public static int findMedianSortedArrays(int[] nums1, int[] nums2)
{
int[] sorted = new int[nums1.length + nums2.length];
int i = 0, j = 0, k = 0;
while (i < nums1.length && j < nums2.length)
{
if (nums1[i] < nums2[j])
{
sorted[k] = nums1[i];
i++;
}
else
{
sorted[k] = nums2[j];
j++;
}
k++;
}
while (i < nums1.length)
{
sorted[k] = nums1[i];
i++;
k++;
}
while (j < nums2.length)
{
sorted[k] = nums2[j];
j++;
k++;
}
return sorted;
}
}
公共类媒体
{
//[1,2],{3,4}
静态int[]nums1=新int[]{1,3};
静态int[]nums2=新int[]{2};
公共静态void main(字符串参数[])
{
System.out.println(findmediansortedarray(nums1,nums2));
}
公共静态int findMediaTransortedArray(int[]nums1,int[]nums2)
{
int[]排序=新int[nums1.length+nums2.length];
int i=0,j=0,k=0;
而(i
快速修复!只需将您的返回声明更改为:
return sorted[sorted.length / 2];
返回的是int[](排序数组),而不是排序数组的中值
我使用偶数个元素进行测试,它返回两个中间值中的第一个,仅供参考。如果愿意,可以在方法开始时验证组合长度是否为奇数。奇数工程如预期。请不要忘记接受 快速修复!只需将您的返回声明更改为:
return sorted[sorted.length / 2];
返回的是int[](排序数组),而不是排序数组的中值
我使用偶数个元素进行测试,它返回两个中间值中的第一个,仅供参考。如果愿意,可以在方法开始时验证组合长度是否为奇数。奇数工程如预期。请不要忘记接受 您返回的是数组,并且您的方法显示int,因为这段代码甚至无法编译。使用
public static int[] findMedianSortedArrays(int[] nums1, int[] nums2)
而不是
public static int findMedianSortedArrays(int[] nums1, int[] nums2)
您还必须在main方法中迭代结果数组以打印值。您返回的是数组,并且您的方法显示int,因此代码甚至无法编译。使用
public static int[] findMedianSortedArrays(int[] nums1, int[] nums2)
而不是
public static int findMedianSortedArrays(int[] nums1, int[] nums2)
您还必须迭代main方法中的结果数组来打印值。您所犯的第一个错误是返回int数组,而方法返回类型是int
public class MedianOfTwoSortedArrays
{
//[1,2],{3,4}
static int[] nums1 = new int[]{1, 3};
static int[] nums2 = new int[]{2};
public static void main(String args[])
{
int a[] = findMedianSortedArrays(nums1, nums2);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static int[] findMedianSortedArrays(int[] nums1, int[] nums2)
{
int[] sorted = new int[nums1.length + nums2.length];
int i = 0, j = 0, k = 0;
while (i < nums1.length && j < nums2.length)
{
if (nums1[i] < nums2[j])
{
sorted[k] = nums1[i];
i++;
}
else
{
sorted[k] = nums2[j];
j++;
}
k++;
}
while (i < nums1.length)
{
sorted[k] = nums1[i];
i++;
k++;
}
while (j < nums2.length)
{
sorted[k] = nums2[j];
j++;
k++;
}
return sorted;
}
}
公共类媒体
{
//[1,2],{3,4}
静态int[]nums1=新int[]{1,3};
静态int[]nums2=新int[]{2};
公共静态void main(字符串参数[])
{
int a[]=findMediansortedarray(nums1,nums2);
对于(inti=0;i来说,您所犯的第一个错误是返回int数组,而您的方法返回类型是int
public class MedianOfTwoSortedArrays
{
//[1,2],{3,4}
static int[] nums1 = new int[]{1, 3};
static int[] nums2 = new int[]{2};
public static void main(String args[])
{
int a[] = findMedianSortedArrays(nums1, nums2);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static int[] findMedianSortedArrays(int[] nums1, int[] nums2)
{
int[] sorted = new int[nums1.length + nums2.length];
int i = 0, j = 0, k = 0;
while (i < nums1.length && j < nums2.length)
{
if (nums1[i] < nums2[j])
{
sorted[k] = nums1[i];
i++;
}
else
{
sorted[k] = nums2[j];
j++;
}
k++;
}
while (i < nums1.length)
{
sorted[k] = nums1[i];
i++;
k++;
}
while (j < nums2.length)
{
sorted[k] = nums2[j];
j++;
k++;
}
return sorted;
}
}
公共类媒体
{
//[1,2],{3,4}
静态int[]nums1=新int[]{1,3};
静态int[]nums2=新int[]{2};
公共静态void main(字符串参数[])
{
int a[]=findMediansortedarray(nums1,nums2);
对于(int i=0;由于返回类型不兼容,iCode甚至无法编译。您可能正在使用修改方法签名的版本。这是我编译的代码,具有预期的行为。仅做了更改。偶数长度的数组没有两个中间值—请查找。@ajb然后他们可以编写代码来检查长度。我是simply显示其语法无效的位置。验证长度是否为奇数是一个完全不同的问题。我确实说过“两个中间值中的第一个”不过一开始。谢谢。由于返回类型不兼容,代码甚至无法编译。您可能正在使用修改方法签名的版本。这是我以预期行为编译的代码。仅做了更改。长度为偶数的数组没有两个中间值--请查找。@ajb然后他们可以编写代码来检查t长度。我只是简单地说明了它们的语法无效的位置。验证长度是否为奇数是一个完全不同的问题。但我一开始确实说了“两个中间值中的第一个”。谢谢。返回int[]违反了预期的方法行为。他们试图获取单个中值,而不是排序数组。返回int[]违反预期的方法行为。他们试图获取单个中值,而不是排序数组。在哪一行检测到错误?在哪一行检测到错误?