Java 公立学生检索id(int id)

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

错误:无法取消对int的引用。我猜我无法使用.equals方法与int进行比较,但如何在不太改变语法的情况下进行比较呢

给定id,我必须让程序在列表中找到该学生并返回该学生的全名。如果找不到学生,我必须返回null。如果有用的话,这是我的学生课

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