遇到小阵列的问题

时间:2012-03-02 23:45:22

标签: java arrays

尝试学习和练习数组但我对这个小例子有疑问。有人可以帮帮我吗?谢谢

public class Homework1{
public static void main(String[] args){
    int[] anArray={ 1,2,3,4,5,6,7,8,9};

    System.out.println(anArray.length);
    int min=0;
    int max=0;

    for(int i=0; i<anArray.length; i++){
        if(anArray[i].compareTo(anArray[min]) < 0)
            min=i;

        if(anArray[i].compareTo(anArray[max]) > 0)
            max=i;
    }

    System.out.println(max);
    System.out.println(min);
}
}

我收到此错误消息:

int cannot be dereferenced
        if(anArray[i].compareTo(anArray[min]) < 0)
int cannot be dereferenced
        if(anArray[i].compareTo(anArray[max]) > 0)

谢谢。

7 个答案:

答案 0 :(得分:3)

表达式anArray[i]的类型为intint是一种原始类型,这意味着它不是一个“真正的”对象。您不能在原始类型上调用方法(如compareTo())。

但是,您可以调用Integer类型的方法,这是与int对应的“装箱”类型。 (当您需要将它们视为对象时,拳击类型是用作基本类型包装的类型。)

只需使用常规比较运算符作为整数类型:

if (anArray[i] < anArray[min]) {
    //...
}

答案 1 :(得分:2)

在Java中,int不是对象,因此使用via运算符(&lt;,&gt;,==等)进行比较。如果你想使用compareTo,你必须使用Integer的数组。

答案 2 :(得分:1)

要使用方法compareTo(),请将数组设为Integer列表,而不是原始int列表。 改变这一行

int[] anArray={1,2,3,4,5,6,7,8,9};

到这一行:

Integer[] anArray={1,2,3,4,5,6,7,8,9};

编译错误将消失。

答案 3 :(得分:1)

您可能需要专门将int转换/装入Integer才能使用compareTo。

E.g。

if (((Integer)anArray[i]).compareTo(anArray[min]) < 0)

但正如另一个答案所述,您可能只想使用标准运算符&lt;,&gt;等直接对int进行比较,而不是使用compareTo。

答案 4 :(得分:1)

int是原始类型,因此无法解除引用。只能取消引用引用类型。点(。)是解除引用运算符。您试图像对象一样处理原始int。您可以使用比较运算符,例如&lt;和&gt;和==比较原始整数。

答案 5 :(得分:1)

我认为你正试图找到最小值和最大值, 在这种情况下,anArray [min]或anArray [max]是无用的,因为你得到了min / max索引的值。 这样做的正确方法是:

if(anArray[i]>max)
    max = anArray[i];

if(anArray[i]<min)
    min = anArray[i];

答案 6 :(得分:1)

CompareTo不适用于Primitive类型。您可以使用比较运算符。

public class TestArray  {

public static void main(String[] args)  {
int[] anArray={ 1,2,3,4,5,6,7,8,9};

System.out.println(anArray.length);
int min=0;
int max=0;

for(int i=0; i<anArray.length; i++){
    if(anArray[i] <(anArray[min]) )
        min=i;

    if(anArray[i]>(anArray[max]) )
        max=i;
}

System.out.println(max);
System.out.println(min);
}
}