簡體   English   中英

在Java中循環新對象並從getMethods傳遞值?

[英]Looping new objects in Java and passing values from getMethods?

我想知道如何在同一個類中循環一個新對象,以便可以重復執行代碼以使多個不同的對象具有不同的詳細信息,這些對象通過Scanner類輸入。

如果我展示自己想做的事情,可能會很有意義:

public class Students
{
    private String studFirstName;       // Student's first name
    private String studSurname;         // Student's surname
    private String courseName;          // Course name

    public Students(String sFirstName, String sSurname, String cName)
    {
        studFirstName = sFirstName;
        studSurname = sSurname;
        courseName = cName;
    }

    public String getStudFirstName()                            // Getter for student's first name
    {
        System.out.println("Enter in student's first name: ");  // Prompts end user for input

        Scanner In = new Scanner(System.in);                    // Creating a new object
        studFirstName = In.next();                              // Accepts a one word input only

        return studFirstName;
    }

    public String setStudFirstName(String sFirstName)           // Setter for student's first name
    {
        return studFirstName;
    }

    public static void main (String [] args)
    {

        Students first[] = new Students[5]; 

        for(Students a : first)
        {
        }

       Students first[] = new Students("", "", ""); 

       String studFirstName = first.getStudFirstName();
    }
}

您需要一個常規的for循環才能在數組中分配值。

int numStudents = 5;
Student students[] = new Student[numStudents];   // creates an array of 5 nulls

Scanner scan = new Scanner(System.in);
for(int i = 0; i < numStudents; i++) {
    System.out.println("Enter your first name: "); // Prompt
    String fname = scan.nextLine();   // Read
    Student s = new Student(fname);   // Assign
    first[i] = s;                     // Store
}

實際上,您不需要get方法,因為您可以在構造函數中設置值。

首先,您應該看一下封裝 吸氣劑並不意味着接受用戶輸入。 Getter應該返回私有字段的值。 設置者應設置私有字段的值。

// This is a field
private String myField;

// This will return the current value for the field 'myField'
public String getMyField() {
    return this.myField;
}

// This will asign a new value to the field 'myField'
public void setMyField(String myField) {
     this.myField = myField;
}

回答

您將需要一個常規的for循環來創建所需數量的學生。 我將您的班級“學生”重命名為Student以適應Java的命名約定。

int numberOfStudents = 3;
// create an array that can hold up to 3 students
Student[] students = new Stundent[numberOfStudents];
// create the Scanner to read from console.
Scanner scanner = new Scanner(System.in);
// create the 3 students and store them in the array
for(int i = 0; i < numberOfStudents; i++) {
    System.out.println("Enter name: ");
    // read the next line from the console
    String name = scanner.nextLine();
    // ...
    // if you have anything you need to create the student object (e.g. name, and so on).
    Student s = new Student(name, .....);
    students[i] = s; // store the student object in the array.
}
// you should evt. close the scanner
// scanner.close();
// you can now do anything with your 3 stored students.
System.out.println("The Students first name is: " + students[0].getStudFirstName());
        int numberOfStudents = 3;
        // create an array that can hold up to 3 students
        Student[] students = new Student[numberOfStudents];
        // create the Scanner to read from console.
        Scanner scanner = new Scanner(System.in);
        // create the 3 students and store them in the array
        for(int i = 0; i < numberOfStudents; i++) {
            System.out.println("Enter name: ");
            // read the next line from the console
            String name = scanner.nextLine();
            // ...
            // if you have anything you need to create the student object (e.g. name, and so on).
            Student s = new Student(studFirstName);
            students[i] = s; // store the student object in the array.
        }


    // you should evt. close the scanner
    // scanner.close();
    // you can now do anything with your 3 stored students.
    System.out.println("The Students first name is: " + students[0].getStudFirstName());
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM