Java:发现很长,需要int

时间:2012-09-26 00:18:43

标签: java casting int long-integer

我正在尝试使用这一行在Java中对一些数组进行排序:

a = sortFacade.sort(2, false, a);

其中'a'是已经初始化的int数组。当我尝试编译它时,我被告知2是长的,而不是int。我已经尝试用(int)2投射它而没有运气。

我也试过了这行

sortFacade.sort(2, false, a);

并且代码编译。

有没有人知道修复此问题?

编辑:这是我在终端收到的消息:

Experimenter.java:146: incompatible types
found   : long
required: int[]
        a = sortFacade.sort(2, false, a);
                           ^

此行可在以下代码中找到:

public static void Experiment1()
{
   for(int size = 5000; size <= 100000; size = size + 5000)
   {
     int[] a randomArray(size, 1000); //a random array of size 'size' and values from 1 - 1000
     a = sortFacade.sort(2, false, a);
     /** This is where the error occurs. 2 specifies insertion sort (error occurs 
      with other acceptable numbers here as well,false specifies descending
      order, 'a' specifies the array to be sorted.*/
   }
}

SortFacade是一个与我所有不同排序算法交互的外观。 2是一个可接受的值,并且调用相同的方法(使用不同的参数)可以在代码的其他部分中工作。

2 个答案:

答案 0 :(得分:1)

这基本上是为自己说话。

Experimenter.java:146: incompatible types
found   : long
required: int[]

你自己说变量a是一个整数数组。上面的错误告诉您虽然该方法返回long,但您需要它返回整数数组int[],因为您尝试将long值分配给a

答案 1 :(得分:0)

如果aint[]数组,那么您收到的错误似乎是因为sortFacade.sort的返回类型为long而您正在尝试将它分配给a数组 - 这是非法的。

sortFacade.sort(2, false, a);编译的原因是因为您没有将其分配给任何内容。如果你说:long b = sortFacade.sort(2, false, a);它应该编译并运行。