2016-06-26 13 views
0

forループを使ってプログラム内にいくつかのオブジェクトを作成したいと思います。オブジェクトのパラメータはキーボードから受け入れられます。私の質問は、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

あなたはオブジェクトを作成しています:コースコース=新しいコース(/.../); 'しかし、あなたは*そのオブジェクトで*何もしていません。それと一緒にやりたいことがありましたか? – David

+0

はい、トポロジカルソートを行うために、すべてのコースオブジェクトをグラフに追加したいと思います。しかし、まずそれらを作成する必要があります。 –

+0

さて、「すべてのコースをグラフに追加する」のを止めるのは何ですか?あなたはどこでそれを試みますか?繰り返しますが、***あなたは***です "それらを作成する"。あなたはただ彼らと何もしていないだけです。 – David

答えて

1

作成するオブジェクトを配列に保存できます。ループ内

// 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); 
0

コレクション

answer by Securoが正しいループの前に

。しかし、配列ではなく、Collectionを使う方がより柔軟で強力です。オブジェクトを作成順に保持したい場合は、を実装としてListインタフェースを使用してください。

ループが開始する前に、空のリストを定義します。

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

あなたがコースの数を知っている場合

ArrayListの初期サイズとしてその番号を渡します。 ArrayListのサイズを変更する必要がない場合は、パフォーマンスとメモリ使用量を少し増やします。

ループでは、オブジェクトをインスタンス化してリストに追加します。

Course course = new Course(…); 
courses.add(course); 
関連する問題