Java 顺序搜索方法中的错误

Java 顺序搜索方法中的错误,java,arrays,search,Java,Arrays,Search,我试着将我想要查找的年份与数组中的年份进行比较,BlueJay告诉我“int不能被解引用。”为什么 关于这个错误,BlueJay说,“你正在使用点表示法访问另一个对象的字段或方法。但是,你正在使用的变量不是对象类型-它没有字段或方法。”我想我理解这一点,但不确定如何修复 searchYear()方法按顺序搜索,查看特定年份是否有CD;它应该列出它找到的所有CD。它有两个参数:数组和我要查找的年份 public static void searchYear(Music[] m, int toFin

我试着将我想要查找的年份与数组中的年份进行比较,BlueJay告诉我“int不能被解引用。”为什么

关于这个错误,BlueJay说,“你正在使用点表示法访问另一个对象的字段或方法。但是,你正在使用的变量不是对象类型-它没有字段或方法。”我想我理解这一点,但不确定如何修复

searchYear()方法按顺序搜索,查看特定年份是否有CD;它应该列出它找到的所有CD。它有两个参数:数组和我要查找的年份

public static void searchYear(Music[] m, int toFind)
{
    int found = 0;
    System.out.println("Search results: ");
    for(int i = 0; i < m.length; i++)
        if (m[i].getYear().compareTo(toFind) == 0)
        {
            System.out.println(m[i]);
            found++;
        }
    if (found == 0)
    { //year was not found
        System.out.println(toFind + "is not in the music library");
    }
}
我需要首先解决这个错误,但通过进一步调整,结果最终应该类似于以下示例输出:

搜索-年份-2001
搜索结果:
误解,2001年,粉红色
洗衣服务,2001年,夏奇拉
2001年共有2家上市公司

搜索-年份-2003
搜索结果:
2003年没有上市

非常感谢您的任何帮助

尝试更改 如果(m[i].getYear().compareTo(toFind)==0)


您要做的是调用位置m[i]处音乐对象的“比较”方法“年份”字段。但是如果那一年是一个整数,那么它就不能工作了。但是您可以使用==

直接比较int,这可能是因为java的
int
不是对象,它们是基本类型,所以您不能使用点(为对象保留)访问它们

有关基本类型的详细信息,请转到


因此,如果函数
getYear
检索到一个
int
,那么您需要将if条件修改为
if(m[i].getYear()==toFind)

为什么不直接执行
m[i].getYear()==toFind
    Music [] myMusic = new Music[10];
    myMusic[0] = new Music("Pieces of You", 1994, "Jewel");
    myMusic[1] = new Music("Jagged Little Pill", 1995, "Alanis Morissette");
    myMusic[2] = new Music("What If It's You", 1995, "Reba McEntire");
    myMusic[3] = new Music("Misunderstood", 2001, "Pink");
    myMusic[4] = new Music("Laundry Service", 2001, "Shakira");
    myMusic[5] = new Music("Taking the Long Way", 2006, "Dixie Chicks");
    myMusic[6] = new Music("Under My Skin", 2004, "Avril Lavigne");
    myMusic[7] = new Music("Let Go", 2002, "Avril Lavigne");
    myMusic[8] = new Music("Let It Go", 2007, "Tim McGraw");
    myMusic[9] = new Music("White Flaw", 2004, "Dido");
if (m[i].getYear() == toFind) {