如何在for循环中创建新对象?

时间:2016-06-26 20:56:28

标签: java object keyboard

我想使用for循环在程序中创建一些对象。从键盘接受对象的参数。我的问题是如何在for循环中创建不同的对象。这就是我所拥有的。

import java.io.*;
import java.util.*;
public class TimeToGraduate {

public static void main(String[] args){

    class Course{
        Course (String name, String sem, int numOfPre){
            this.name = name;
            this.sem = sem;
            this.numOfPre = numOfPre;
        }
        String name;
        String sem;
        int numOfPre;
    }

    Scanner scanner = new Scanner(System.in);
    System.out.print("Input two integers here: ");
    String totalCourse = scanner.nextLine();
    String[] numOfCourse = totalCourse.split(" ");//[0] num of total course  [1] max num per semester

    for(int i = 0;i < Integer.parseInt(numOfCourse[0]); i++){
        System.out.print("Please input course info here: ");
        String courseInfo = scanner.nextLine();
        String[] infoOfCourse = courseInfo.split(" ");

        String courseName = infoOfCourse[0];
        String courseSem = infoOfCourse[1];
        int courseNumOfPre = Integer.parseInt(infoOfCourse[2]);

        Course course = new Course(courseName,courseSem,courseNumOfPre);

 //How to create different objects?

    }

    scanner.close();
}
}

2 个答案:

答案 0 :(得分:1)

您可以将正在创建的对象保存在数组中。

在for循环之前:

// create an empty array with the size of the total courses
int numOfCourses = Integer.parseInt(numOfCourse[0]);
Course courses[] = new Course[numOfCourses];

循环内部:

courses[i] = new Course(courseName, courseSem, courseNumOfPre);

答案 1 :(得分:0)

集合

answer by Securo是正确的。但是使用Collection而不是数组,它更灵活,更强大。如果要按创建顺序保留对象,请使用List接口,并使用ArrayList作为实现。

在循环开始之前,定义一个空列表。

new AlertDialog.Builder(context)
                .setMessage("My message")
                .setPositiveButton("Positive Button", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {

                    }
                })
                .setNegativeButton("Negative Button", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {

                    }
                })
                .setNeutralButton("Neutral Button", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {

                    }
                })
                .show();

如果您知道课程数量,请将该数字作为List<Course> courses = new ArrayList<>(); 的初始大小。如果不需要调整ArrayList的大小,可以帮助提高性能和内存使用率。

ArrayList

在循环中,实例化对象并添加到List。

List<Course> courses = new ArrayList<>( numberOfCourses );