2013-10-03 4 views
0

나는 몇 시간 동안이 작업을 해왔으므로 누군가 나를 도울 수 있기를 바랍니다. 나는 학생들의 arraylist를 만들고 다음과 같은 명령을 내려야 만한다. 추가, 찾기 및 삭제. 어쨌든 내 추가, 찾기 기능을 작동하지만 괜찮을 때 학생을 삭제하려고하면 잘못된 학생이 나타납니다! 나는 무엇을 해야할지를 모른다. 나는 모든 것을 시도한 것처럼 느낀다.ArrayList 및 Java 용 메소드

public void addStudent(String studentName, long studentID, String address) { 
    Student newStudent = new Student (studentName, studentID, address); 
    collegeList.add(newStudent); 
} 

public static void deleteStudent() { 
    Scanner input=new Scanner(System.in); 
    System.out.print("Enter student ID"); 
    long studentNumber=input.nextLong(); 

    if(directory.isValidID(studentNumber) && directory. withinRange(studentNumber)) { 
     System.out.print("Deleting Student"); 
     System.out.print(directory.findStudent(studentNumber)); 
     System.out.print("please confirm with y/n"); 
     Scanner myans=new Scanner(System.in); 
     String confirmation=myans.next(); 

     if (confirmation.equals("y")) { 
      directory.deleteStudent(studentNumber); 
      System.out.print("student deleted"); 
     } 

     if(confirmation.equals("n")) { 
      System.exit(0); 
     } 
    } 
} 

/** 
Searches for student based upon their student number 
@param studentID unique student number for each student 
@return students entire information 
*/ 
public String findStudent(long studentID) { 
    String str; 
    Student newStu; 

    for (int i=0; i<collegeList.size(); i++) { 
     newStu=collegeList.get(i); 

     if(newStu.getStudentID()==studentID); 

      return newStu.toString(); 
    } 

    return null; 
} 

/** 
Removing student from collegeList 
@param studentID unique student number 
@return none 
*/ 
public void deleteStudent (long studentID) { 
    Student newStu; 
    for (int i=0; i<collegeList.size(); i++) { 
     newStu=collegeList.get(i); 

     if (newStu.getStudentID()==studentID) 
      collegeList.remove(i); 
    } 
} 
+0

'List # remove' 대신에 반복자를 사용하십시오. –

+0

내 findstudent 메소드가 실제로 올바르지 않아 올바른 학생을 찾지 못했습니다 ... – user2809437

+0

이제 'Student'객체 대신'find' 메소드에서'String'을 반환하는 이유는 무엇입니까? –

답변

0

Student 클래스는 hashCode()equals() 방법을 무시합니까? 그렇지 않으면 Java 콜렉션에서 제대로 작동하지 않습니다.

그럼 당신은 같은 일을 할 수 있어야한다 :

studentList.add(student); 
... 
int index = studentList.indexOf(student); 
if (index != -1) return studentList.get(index); 
... 
studentList.remove(student); 
3

내가 잘못 생각하는 경우 정정 해줘,하지만 비교가 잘못된 것 같습니다하시기 바랍니다. 낮은 점수를 얻은 다음 가장 높은 점수를 얻은 경우 가장 높은 점수를받습니다.

highest>newStu.getQuizScore() 

아마도 당신은 또한 가장 높은 점수를 찾기 위해 전체 목록을 반복 할 필요가

highest<newStu.getQuizScore() 

해야한다. 이제 첫 번째 점수보다 낮은 첫 번째 점수를 반환하지만 정확하지 않을 수 있습니다. 나는 이런 식으로 할 것입니다 :

public Student findHighest() { 

    Student highest; 
    highest=collegeList.get(0); 


    for (int i=1; i<collegeList.size(); i++) { 

     Student newStu=collegeList.get(i); 

     if (highest.getQuizScore()<newStu.getQuizScore()){ 
      highest=newStu; 
     } 

    } 
    return highest; 

} 

내 대답에 대한 모든 문제는 미안 해요, 내가 스택 오버플로를 처음이다.

건배.