Java 除法时有损转换(长到整数)

Java 除法时有损转换(长到整数),java,arrays,quicksort,Java,Arrays,Quicksort,我试图在数组(long类型)中找到中间索引 我正在解决的问题需要很长时间才能返回,因此我无法更改签名 我想在我的快速排序代码中找到轴心点,但我得到了一个错误“从long到int的可能有损转换” 我知道分割时可能会丢失一些信息,但我想绕过它 以下是包含错误的代码: public static long partition(long[] array, long left, long right){ long i = left, j = right; long tmp; lon

我试图在数组(long类型)中找到中间索引 我正在解决的问题需要很长时间才能返回,因此我无法更改签名 我想在我的快速排序代码中找到轴心点,但我得到了一个错误“从long到int的可能有损转换” 我知道分割时可能会丢失一些信息,但我想绕过它 以下是包含错误的代码:

public static long partition(long[] array, long left, long right){
    long i = left, j = right;
    long tmp;
    long pivot = array[(left + right) / 2];  // <-----ERROR HERE  <------

    while(i <= j) {
        while(array[i] < pivot){
        i--;
       }
       while(array[j] > pivot) {
           j--;
       }
       if(i <= j) {
           tmp =array[i];
           array[i] = array[j];
           array[j] = tmp;
           i++;
           j--;
       }
       }
    return i;
}
公共静态长分区(长[]数组,左长,右长){
长i=左,j=右;
长tmp;
长轴=数组[(左+右)/2];//来自:

数组必须由int值索引

参数(以及
i
j
)使用
long
是没有意义的(因为数组不能有那么多元素),并且会导致编译时错误。请将它们从以下位置更改为
int

数组必须由int值索引

参数(以及
i
j
)使用
long
是没有意义的(因为数组不能有那么多的元素),并且会导致编译时错误。将它们更改为
int
使用“数组[索引]”,此“索引”必须是int。因此

long pivot = array[(int)((left + right) / 2)];
使用“array[index]”,此“index”必须为int

long pivot = array[(int)((left + right) / 2)];

我试着用打字机把长字体打成整数。。 长轴=数组[(int)((左+右)/2)];
它对我有效,你能详细说明在哪种情况下会出现“从long到int的可能有损转换”错误吗。。 长轴=数组[(int)((左+右)/2)];
它对我很有效,你能详细说明在哪种情况下会出现错误“从long到int的可能有损转换”。

数组的索引类型为
int
try array[(左+右)/2L];@lakshman没有区别,2将进行二进制数字升级到long。数组的索引类型为
int
try array[(左+右)/2L];@lakshman没有区别,2将进行二进制数字升级到long。谢谢您的帮助谢谢您的帮助