0
public class Roster extends ArrayList<Student> 
{
public boolean containsStudent(String ln)
{ 
    Scanner user_input = new Scanner (System.in);
    System.out.println("Enter last name of student: ");
    String lName = user_input.next();
    for (Student student : this)
    {
        if (student.getLastName().equals(lName)) 
        return true;
    }
    return false; 
}

如何修复下一个方法中的错误:

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。我猜我无法与使用 .equals 方法的整数进行比较,但我怎样才能在不过多更改语法的情况下进行比较。

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

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

3 回答 3

1

ints 没有equals()查看它们是否相等的方法,它们使用==运算符,因为它是原始类型。您要更改的是该行if (student.getID().equals(idNum)),它应该是: if (student.getID() == idNum)

于 2013-03-04T00:33:49.043 回答
1

您的 getID() 方法返回一个 int,它是一种原始类型,这意味着它没有任何方法,包括您尝试调用的“等于”。因此,您需要将 idNum 从 String 更改为 int,或者您需要将从 student.getID() 返回的内容更改为 String。

由于您使用的是 Scanner,它有一个 nextInt() 方法,它将用户输入作为 int 返回。然后,您只需使用标准 == 运算符检查等于。

像这样的东西:

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 " "; 
}
于 2013-03-04T00:34:53.910 回答
0

使用Integer类。它是一个包装器int,让您可以访问诸如equals()方法之类的东西:http: //docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html

于 2013-03-04T00:34:12.603 回答