2016-06-27 3 views
1

В моем java-коде я построю несколько объектов типа Студент. --- объект Student содержит имя строки и класс int --- Можно ли перечислить весь мой созданный объект с помощью метода?Как управлять/перечислять мои объекты?

или, вернее, перечислить все имена моих объектов, не добавляя их по одному?

+0

Вы можете поместить эти объекты в коллекцию/массив и пропустить их для печати. мы должны увидеть некоторые коды, чтобы лучше понять вашу проблему. – Kent

+1

Пожалуйста, укажите [mcve]. –

+1

Добавляя к ответу @ Kent, в вашем классе Student вам нужно добавить метод 'toString()', чтобы они печатали, как вы хотите. – Ian

ответ

0

Можно ли перечислить все мои созданные объекты с помощью метода?

да, переопределить метод toString в классе, а затем создать список студентов

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

, а затем распечатать их вызова System.out.println(myList);

1

Конечно, поместить их в какой-то коллекции как массив или список и перебирать его, используя для каждого, вызывая печать на методе, который возвращает имя студента в цикле.

Пример кода:

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 есть автоматическое создание для геттеров и сеттеров. –

+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

Смежные вопросы