2016-06-27 3 views
1

내 Java 코드에서 학생 유형의 개체를 몇 개 만듭니다. --- 객체 Student에는 문자열 이름과 int 그레이드가 포함되어 있습니다 --- 메소드로 생성 된 모든 객체를 나열 할 수 있습니까?내 개체를 관리/나열하는 방법?

또는 하나씩 추가하지 않고 내 개체의 모든 이름을 나열 하시겠습니까?

+0

개체를 컬렉션/배열에 넣고 반복하여 인쇄 할 수 있습니다. 우리는 문제를 더 잘 이해할 수있는 코드를 찾아야합니다. – Kent

+1

[mcve]를 포함하십시오. –

+1

@ Kent의 답변에 추가하면, Student 클래스에서 원하는 방식으로 출력 할 수 있도록'toString()'메소드를 추가해야합니다. – Ian

답변

0

내 생성 된 모든 개체를 메서드로 나열 할 수 있습니까?

예, 클래스의 toString 메소드를 오버라이드 (override), 다음

List<Student> myList = new ArrayList<Student>();

학생들의 목록을 만든 다음이를 System.out.println(myList);

1

물론 전화 인쇄, 일부 컬렉션 그들 모두를 넣어 배열이나리스트와 같이, 루프를 반복하면서 루프를 통해 학생의 이름을 반환하는 메서드에서 print를 호출합니다.

코드 예제 :

List<Student> students = new ArrayList<>(); 
students.add(student1); 
... 
for (Student s : students) { 
    System.out.println(s.getName()); 
} 
+0

입니다. 편집 해 주셔서 감사합니다. 내 전화에서 레이아웃을 엉망으로 만든 오타를 찾을 수 없었습니다. –

1

당신은 학생이 컬렉션/배열로 당신이 좋아하는 중 컬렉션/배열하고 인쇄를 통해 다음 루프를 개체에 추가 할 수 있습니다.

public class Student { 
    private String name; 
    private int grade; 

    public Student(String name , int grade){ 
     this.name = name; 
     this.grade = grade; 
    } 

    public int getGrade() { 
     return grade; 
    } 

    public String getName() { 
     return name; 
    } 
} 

메인 클래스 예 :

import java.util.ArrayList; 

public class Main 
{ 
    public static void main(String[] args) { 
     //Creating a list of Student Objects 
     ArrayList<Student> students = new ArrayList<>();  
     students.add(new Student("John",10)); 
     students.add(new Student("Ahmed",100)); 
     students.add(new Student("Jonny",10)); 

     //Printing the name of each student 
     for(Student student:students){ 
      System.out.println(student.getName()); 
     } 
     //Printing the grade of each student 
     for(Student student:students){ 
      System.out.println(student.getGrade()); 
     } 
    } 
} 
+0

비 최종, 비공개 필드를 사용하는 것에 대해 조언하지 않겠습니다. 일이 조금 더 복잡 해지면 모든 종류의 문제가 발생하고 게터를 쓰는 것은 그렇게 많은 일이 아닙니다. –

+0

감사합니다. 나는 캡슐화를 적용하는 것이 좋은 방법이라는 것에 동의하지만, 어떤 상황에서는 과잉이라고 생각합니다. 특히 문제가되지 않는 범위에서 그렇습니다. 어쨌든, 좋은 연습이 필요합니다. 특히 대부분의 IDE에는 getter 및 setter 용 자동 생성 기능이 있습니다. –

+1

캡슐화 할 답변을 업데이트했습니다 :) –

0

예, 당신이 그렇게 할 수 여기에

은 예입니다. 이것은 완전한 예로서 제공되어야합니다.

import java.util.Scanner; 

public class StudentDemonstration { 
    public static void main(String[] args){ 
     Scanner in = new Scanner(System.in); 
     System.out.println("How many student records to create : "); 
     int numberStudents = in.nextInt(); 
     in.nextLine(); 
     Student students[] = new Student[numberStudents]; 
     for (int i=0; i<students.length; i++){ 
      students[i] = new Student(); 
      System.out.println("Enter name for student " + i + " : "); 
      String name = in.nextLine(); 
      students[i].setName(name); 
      System.out.println("Enter grade for student " + i + " : "); 
      int grade = in.nextInt(); 
      in.nextLine(); 
      students[i].setGrade(grade); 
     } 
     System.out.println("Printing student details : "); 
     for (int i=0; i<students.length; i++){ 
      System.out.println("Student details " + i); 
      System.out.println("Name : " + students[i].name); 
      System.out.println("Grade : " + students[i].grade); 
     } 
     in.close(); 
    } 
} 

class Student{ 
    String name; 
    int grade; 

    public Student(){ 
     this.name = null; 
     this.grade = 0; 
    } 

    public Student(String name, int grade){ 
     this.name = name; 
     this.grade = grade; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 

    public void setGrade(int grade){ 
     this.grade = grade; 
    } 
} 
+0

나에게 답을 주신 모든 분들께 감사드립니다. 너는 매우 도움이되었다. – Tobi

관련 문제