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