Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用.intValue错误吗?_Java_Arrays_Integer_Quicksort - Fatal编程技术网

Java 使用.intValue错误吗?

Java 使用.intValue错误吗?,java,arrays,integer,quicksort,Java,Arrays,Integer,Quicksort,因此,我一直在尝试获取整数数组的平均值,但我的方法没有发挥最大的作用,因为我试图将对象引用适配到基元中。。我试着使用intValue,但我认为我用错了。。有什么想法吗 //Variation 3 - Choose Mean as pivot private static int getMeanIndexAsPivotIndex(Comparable comparableArray[],int leftIndex, int rightIndex) { int

因此,我一直在尝试获取整数数组的平均值,但我的方法没有发挥最大的作用,因为我试图将对象引用适配到基元中。。我试着使用intValue,但我认为我用错了。。有什么想法吗

       //Variation 3 - Choose Mean as pivot
   private static int getMeanIndexAsPivotIndex(Comparable comparableArray[],int leftIndex, int rightIndex) {
          int sum = 0;
          int add = 0;
    for (int i = 0; i < comparableArray.length; i++) {
        add = comparableArray[i].intValue();
        sum +=  add;
    }
    return sum / comparableArray.length;
}
这是我制作数组的地方

     //Random Array
 Integer[] unsortedArray = new Integer[8];
   for (int i = 0; i < unsortedArray.length; i++) {
       unsortedArray[i] = randomRange(0,1000);
   }


    QuickSort.java:157: error: cannot find symbol
        add = comparableArray[i].intValue();
                                ^
  symbol:   method intValue(int)
  location: interface Comparable
Note: QuickSort.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

根据您的签名comparableArray是Comparable[]类型而不是Integer[],此类型没有.intValue方法


将方法签名更改为使用整数[]应该可以解决此问题

详细阐述@EricBouwers的答案

类整数扩展了类编号并实现了可比较接口,即类声明为

public final class Integer extends Number implements Comparable<Integer>
但是arr将无法调用intValue,因为它是Compariable类型而不是Integer类型。它将能够调用compareTo

您不能这样写:

Comparable<Integer>[] arr = new Integer[]{1,2,3};
Integer[] arr = new Comparable<Integer>[]{1,2,3};

然后您可以在arr上调用intValue和compareTo。

是的,这很有效!但现在我有一个ArrayIndexOutofBound异常--。谢谢你!
Integer[] arr = new Integer[]{1,2,3};