2011-01-05 8 views
-1

Ich möchte, dass meine Methode public void showClassRoomDetails(String teacherName) die Arraylist-Indexnummer mithilfe von lehrerName zurückgibt.Zurückgeben der Indexnummer eines Arraylists in Java

Dank

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


} 
+1

Haben Sie eine spezifische Frage? –

+0

Warum haben Sie das abgelehnt? Die "Frage" könnte implizit sein, aber klar genug, denke ich? –

+1

ein neuer Benutzer, aber eine Erweiterung der folgenden "Fragen": http://StackOverflow.com/Questions/4599283, http://StackOverflow.com/Questions/4596544, http://StackOverflow.com/Questions/4593232 –

Antwort

4

Verwenden regelmäßige Schleife, nicht die foreach Schleife:

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

entweder ein reguläres for-Schleife (for (int i=0;i<classrooms.size();i++)) oder ArrayList.indexOf(classroom) verwenden.

0

So ähnlich?

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

wesentlich eleganter,

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

Alternativ einen Zähler halten, die (auf der if Anweisung) für jede not true Bedingung erhöht wird.

0
//Return set containing multiple matched indexes 
public Set<Integer> showClassRoomDetails(String teacherName){ 
    Set<Integer> result = new HashSet<Integer>(); 
    int i=0; 
    for (Classroom classroom : this.classrooms){ 
     if (classroom.returnTeacherName().equals(teacherName)) 
      result.add(i); 
     i++; 
    } 
    return result; 
} 
Verwandte Themen