Java 公立学生检索id(int id)
错误:无法取消对int的引用。我猜我无法使用.equals方法与int进行比较,但如何在不太改变语法的情况下进行比较呢 给定id,我必须让程序在列表中找到该学生并返回该学生的全名。如果找不到学生,我必须返回null。如果有用的话,这是我的学生课Java 公立学生检索id(int id),java,Java,错误:无法取消对int的引用。我猜我无法使用.equals方法与int进行比较,但如何在不太改变语法的情况下进行比较呢 给定id,我必须让程序在列表中找到该学生并返回该学生的全名。如果找不到学生,我必须返回null。如果有用的话,这是我的学生课 public Student retrieveByld(int id) { Scanner user_input = new Scanner (System.in); System.out.println("Enter the ID of
public Student retrieveByld(int id)
{
Scanner user_input = new Scanner (System.in);
System.out.println("Enter the ID of the student: ");
String idNum = user_input.next();
for (Student student : this)
{
if (student.getID().equals(idNum))
return student.getFullName();
}
return " ";
}
int
s没有equals()。您希望更改的是一行if(student.getID().equals(idNum))
,它应该是:if(student.getID()==idNum)
使用整数
类。它是int
的包装器,允许您访问equals()
方法:您的getID()方法返回一个int,这是一个基本类型,意味着它没有任何方法,包括您试图调用的“equals”。因此,您需要将idNum从字符串更改为int,或者需要将从student.getID()返回的内容更改为字符串
因为您使用的是扫描仪,所以它有一个nextInt()方法,该方法将以int形式返回用户输入。然后您只需使用标准==运算符检查是否等于
大概是这样的:
public class Student
{
private String lName, fName;
private int idNum;
public Student(int id, String fn, String ln)
{
lName = ln;
fName = fn;
idNum = id;
}
public String getFullName()
{
return fName + " " + lName;
}
public String getLastName()
{
return lName;
}
public String getFirstName()
{
return fName;
}
public int getID()
{
return idNum;
}
public String toString()
{
return fName + " " + lName + " " + idNum;
}
}
我看不出有任何必要在这里包装int
s,只是无用的开销。好吧,我这么做了,但正如我对Pescis所说的,这意味着找不到getFullName()方法,即使它在student类中。是的,这不是最好的选择(尽管它完成了任务)。我想我更关注的是int不能被解除引用错误,而不是实际问题。此外,作为一种编码偏好,您可能希望养成习惯,总是在if子句后面加括号。它可以防止你在编辑代码时向代码扔东西。你是对的,我也在想,但看起来很简单。但这并不是说即使在学生类中也找不到getFullName()方法。@AlshadayG我在你发布的内容中没有看到任何getFullName()方法。。也许可以结合使用getFirstName()和getLastName()方法?类似于返回getFirstName()+“”+getLastName()代码>很抱歉在我发布问题时忘记了它,但即使我添加了它,它仍然会给我错误。公共字符串geFullName()
在代码中,它只是调用getFirstName(),而不是student.getFirstName()。有趣的是,您已经问了一个关于相同作业的问题:
public class Student
{
private String lName, fName;
private int idNum;
public Student(int id, String fn, String ln)
{
lName = ln;
fName = fn;
idNum = id;
}
public String getFullName()
{
return fName + " " + lName;
}
public String getLastName()
{
return lName;
}
public String getFirstName()
{
return fName;
}
public int getID()
{
return idNum;
}
public String toString()
{
return fName + " " + lName + " " + idNum;
}
}
public Student retrieveByld(int id)
{
Scanner user_input = new Scanner (System.in);
System.out.println("Enter the ID of the student: ");
int idNum = user_input.nextInt();
for (Student student : this)
{
if (student.getID() == idNum)
return getFullName();
}
return " ";
}