2011-03-19 5 views
0

GradeBook 클래스를 만들고 각 학생을위한 개체를 만들고 이름과 courseName 및 Grade를 벡터에 저장 한 다음 결국 모두 인쇄하려고합니다. 여기에 내 코드 : 그것은 "끝"의 여부, 다음 courseName과 성적을 얻을, studentName, courseName 및 courseGrade있는 성적표 필드로 설정하면우리는 C++에서 벡터를 사용했기 때문에 벡터를 Java로 어떻게 사용해야합니까?

public static void main(String [] args) 
    { 
     Vector<GradeBook> gVec = new Vector<GradeBook>() ; 
     Scanner sc = new Scanner (System.in) ; 

     String sName = sc.nextLine(); 
     String cName = sc.next(); 
     int grade = sc.nextInt() ; 
     while(!sName.equals("end")) 
     { 
      GradeBook st = new GradeBook() ; 
      st.setCouseInfo(sName, cName, grade) ; 
      gVec.add(st) ; 
      sName = sc.nextLine(); 
      cName = sc.next(); 
      grade = sc.nextInt() ; 
     } 
    } 

과정에 지원 가져 이름, 수표, 그것은 추가합니다 GradeBook의 벡터에.

그러나 프로그램의 끝에서 나는 결과를 인쇄 문제가

, 그것은 같은 ++ 나 C에서 그것을 어떻게 같이 할 수 없습니다 :

for (int i=0;i<gVec.size();i++) 
{ 
System.out.println(gVec[i].studentName); 
System.out.println(gVec[i].courseName); 
System.out.println(gVec[i].courseGrade); 
} 

누군가가 나에게 방법에 대한 팁을 줄 수 Java에서 벡터를 사용 하시겠습니까? 감사!

답변

5

원하는 방법은 Vector.get(int i)입니다. 자세한 내용은 here을 참조하십시오.

그러나 저는 Vector를 사용하지 않을 것입니다. ArrayList 또는 LinkedList을 선호합니다. 왜 ? 기본적으로 각 작업에서 동기화되는 Vectors에 대한 (작은) 성능 패널티를 지불하고 동기화 패턴 (per-method)은별로 유용하지 않습니다. 자세한 내용은 this answer을 참조하십시오.

당신은 []를 통해 벡터 요소에 액세스 할 수 없습니다
+0

당신의 문서는 1.4.2를 가리키고 있습니다.이 문서는 상당히 오래된 문서이며 제네릭을 사용하지 않습니다. – alternative

+0

이제 구글 만이 java 클래스를위한 최선의 선택 인 아이디어를 포기한다면 v12에 –

+0

으로 업그레이드했습니다. 물론 우리의 잘못이라고 생각합니다. – MeBigFatGuy

2

, 당신이 경우, 동기화 대신 gVec.get(i)를 사용하거나 foreach 루프

for (GradeBook bookItem : gVec){ 
System.out.println(bookItem.studentName); 
System.out.println(bookItem.courseName); 
System.out.println(bookItem.courseGrade); 
} 
또한

Vector를 사용해야합니다 ArrayList 또는 LinkedList

에서 단일 스레드보기에서 작업
관련 문제