Връщане на индексния номер на Arraylist в Java

Бих искал моят метод public void showClassRoomDetails(String teacherName) да върне индексния номер на Arraylist с помощта на teacherName.

Благодаря

    import java.util.ArrayList;

public class School
{
private ArrayList<Classroom> classrooms;
private String classRoomName;
private String teacherName;

public School()
{
    classrooms =  new ArrayList<Classroom>();
}

public void addClassRoom(Classroom newClassRoom, String theClassRoomName)
{
    classrooms.add(newClassRoom);
    classRoomName = theClassRoomName;
}

public void addTeacherToClassRoom(int classroomId, String TeacherName)
{
    if (classroomId < classrooms.size() ) {
        classrooms.get(classroomId).setTeacherName(TeacherName);
    }
}

public void showClassRoomDetails(String teacherName)
{
    for (Classroom classroom : this.classrooms)
    {
        if (classroom.returnTeacherName().equals(teacherName))
        {
            System.out.println(classroom.returnClassRoomName());
            System.out.println(classroom.returnTeacherName());   
            break;
        }
    } 
}


}

person Daniel    schedule 05.01.2011    source източник
comment
Имате ли конкретен въпрос?   -  person Andy Thomas    schedule 05.01.2011
comment
Защо гласувахте против това? Въпросът може да е имплицитен, но достатъчно ясен, предполагам?   -  person Lukas Eder    schedule 05.01.2011
comment
нов потребител, но разширение на следните „въпроси“: stackoverflow.com/questions/4599283, stackoverflow.com/questions/4596544, stackoverflow.com/questions/4593232   -  person robert_x44    schedule 05.01.2011
comment
докато много от нас са готови да помогнат при проблеми с домашните, вие трябва да покажете какво сте направили, за да се опитате да разрешите даден проблем, и да поискате конкретна помощ. Ние не сме тук, за да пишем домашните ви по метод по метод.   -  person robert_x44    schedule 05.01.2011
comment
@RD Прав си, пропуснах тези...   -  person Lukas Eder    schedule 05.01.2011


Отговори (3)


Използвайте обикновен цикъл, а не цикъла foreach:

public int showClassRoomDetails(String teacherName)
{
    for (int i = 0; i < this.classrooms.size(); i++)
    {
        Classroom classroom = classrooms.get(i);
        if (classroom.returnTeacherName().equals(teacherName))
        {
            return i;
        }
    } 

    // Return -1 when the teacher was not found
    return -1;
}
person Lukas Eder    schedule 05.01.2011

Или използвайте обикновен for цикъл (for (int i=0;i<classrooms.size();i++)), или използвайте ArrayList.indexOf(classroom).

person DJClayworth    schedule 05.01.2011

Нещо като това?

for (int i = 0; i < classrooms.size(); i++) {
    Classroom classroom = classrooms.get(i);
    if (classroom.returnTeacherName().equals(teacherName)) {
        System.out.println("Index: " + i);
    }
}

Много по-елегантно,

public int showClassRoomDetails(String teacherName) {
    for (int i = 0; i < classrooms.size(); i++) {
        Classroom classroom = classrooms.get(i);
        if (classroom.returnTeacherName().equals(teacherName)) {
            return i;
        }
    }

    return -1;
}

Като алтернатива, поддържайте брояч, който се увеличава за всяко not true условие (на вашето if изявление).

person Buhake Sindi    schedule 05.01.2011