顺序搜索的方法出错

时间:2014-03-29 17:45:45

标签: java arrays search

我正在尝试将我想要找到的年份与我的数组中的年份进行比较,而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");
    }
}

这是我的阵列:

    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");

我需要先解决这个错误,但是如果进行一些调整,结果应该最终类似于示例输出

搜索 - 年 - 2001年 搜索结果:
被误解,2001年,粉红色 洗衣服务,2001年,夏奇拉郎 2001年有2个房源

搜索 - 年 - 2003年 搜索结果:
没有2003年

的列表

非常感谢任何和所有的帮助!

2 个答案:

答案 0 :(得分:1)

这可能是因为java的int不是对象,它们是基本类型,因此您无法使用点(为对象保留)访问它们。

有关基本类型的更多信息,请转到here

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

答案 1 :(得分:0)

尝试改变     if(m [i] .getYear()。compareTo(toFind)== 0)

if (m[i].getYear() == toFind) {

您正在做的是调用位置为m [i]的Music对象的year字段的compareTo方法。但是,如果那一年是一个无法工作的int。但您可以使用==

直接比较整数