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 メソッドを使用して int と比較することはできないと思いますが、構文をあまり変更せずにどうすればよいでしょうか。

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

int■プリミティブ型であるequals()ため、それらが等しいかどうかを確認するメソッドはありません。演算子を使用します。==変更するために探しているのは行です。if (student.getID().equals(idNum))これは次のようになります if (student.getID() == idNum)

于 2013-03-04T00:33:49.043 に答える
1

getID()メソッドは、プリミティブ型であるintを返します。これは、呼び出そうとしている「equals」を含むメソッドがないことを意味します。したがって、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などにアクセスできます。http: //docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.htmlequals()

于 2013-03-04T00:34:12.603 に答える