我正在尝试将我想要找到的年份与我的数组中的年份进行比较,而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年
非常感谢任何和所有的帮助!
答案 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。但您可以使用==
直接比较整数