2011-06-22 9 views
1

私はProjectクラスを持っています。私はこれをやりたいプロジェクトを保持したいと思っています。私はジュエリーであり、本質的に私が進めている各プロジェクトのファイルを持っていたいと思っています。各ファイルには、現在、名前、開始日、締切日、および説明があります。私はprintPro()を呼びたいと思います。私はちょうどその方法を知らない。ArrayListに追加した別のクラスのメソッドを使用できますか?

Projectクラスは次のようになります。

public class Project { 
    String name; 
    int date;//start date 
    int fDate;//finish date 
    String description; 

    public Project(String gName, int gDate, int gFDate, String gDescription){ 
     // mean they are the ones that are given. 
    } 
    public void receivedName(String receivedName) { 
     name= receivedName; 
    } 
    public void receivedDate(int receivedDate) { 
    date= receivedDate; 
    } 
    public void receivedFDate(int receivedDate) { 
    fDate= receivedDate; 
    } 


    public String returnName(){ 
    return name; 
    } 
    public int returnDate(){ 
    return date; 
    } 
    public int returnFDate(){ 
    return fDate; 
    } 
    public String returnDescription(){ 
    return description; 
    } 

    public String printPro(int index){ 
    String tempString = ("Project Name: " + name + 
      "\nStart Date: " + date + 
      "\nFinish Date: " + fDate + "\nDescription: " +  description); 
     return tempString; 
    } 

    public void printProject(int index){ 

    System.out.println("Project Name: " + name + 
      "\nStart Date: " + date + 
      "\nFinish Date: " + fDate + "\nDescription: " +  description); 
     } 

    } 

を今コンソールかかわらず実行しているすべては私が持っているすべてです。後でテキストファイルを作成して読み込む方法を学ぶときに、ウィンドウを作成するつもりでした。とにかく、ここでコンソール用のコードです:それはこの質問を行き詰まらないように

public class Top{ 
    Math help = new Math();//Creates a Math object 
    People person = new People();//Creates a People object 
// Project nProject= new Project(); 
    ArrayList<Project> mProject = new ArrayList<Project>(); 
    Project[] storeProject; //Tried to create an array of Projects I could just add to. 
    Project[] storeTempProject; 
    StringTest sTest = new StringTest(); // This is my class to use the console. 
    String choice; //Temporary strings 
    String redo; 

public static void main (String [] args){ 
// ============Project Menu ========================= 
private void project() { 
    System.out.println("ADD, DELETE, REVIEW, or BACK?"); 
    sTest.stringReader(); 
    choice = sTest.getString(); 

    if (sTest.test(choice, "add")){ 
     System.out.println("What would you like to call this project?");  
     sTest.stringReader(); 
     String name = sTest.getString(); 

     System.out.println("When would you like it to start?"); 
     sTest.stringReader(); 
     String startDate = sTest.getString(); 
     int sDate = Integer.parseInt(startDate); 

     System.out.println("When would you like it to end?"); 
     sTest.stringReader(); 
     String finishDate = sTest.getString(); 
     int fDate = Integer.parseInt(finishDate); 

     System.out.println("What is the description of your project?"); 
     sTest.stringReader(); 
     String projectDescription = sTest.getString(); 

     mProject.add(new Project(name, sDate, fDate, projectDescription)); 
    } 
} 

私は私のコードのうち、いくつかの不要なものを取り出しました。もっと情報が必要なら私に知らせてください。私は今1時間探しているので、これはうまくいかないと思っています。別の方法でやる必要があります。

+1

どういうことがありますか?あなたは明確にすることができますか? – Dan

+0

私は申し訳ありませんが、私は問題が何であるか、あなたが達成しようとしていることを理解していません。あなたのコードはコンパイルされたように見えます。 –

+0

私は本当に従っていません。どこからprintProを呼び出そうとしていますか? – Jeremy

答えて

3

私はあなたの質問に完全にわからないんだけど、多分これ、あなたが後にあるか:最初に表示するには

for (Project proj : mProject) { 
    proj.printPro(); 
} 

あなたはこのようなあなたのArrayListの要素のメソッドを呼び出すことができます

mProject.get(0) 

ArrayListの最初のプロジェクトを返します。秒を戻すには、引数を 'get'に1に変更します。残りの部分を取得する方法を理解できるはずです。

+0

Projectオブジェクトの1つに対してprintPro()を呼び出す方法はありますか?私はそれらの2つを持っていると私はちょうど最初のものを表示したいと思います。 – Funlamb

+0

これはうまくいった。私は、しかし、別の質問があります。作成したプロジェクトはリストに追加されませんでした。私は入れました:mProject.add(新しいプロジェクト( "名前"、12、13、 "projectDescription"));私はあなたのコードを実行したが、私が得たのは空の1つのプロジェクトだった。私は助けを求めている。 – Funlamb

+0

私はそれを理解しました。私はリストに追加しても何も変わらなかった。実際にパラメータを使用するには、Projectクラスのコンストラクタを変更する必要がありました。助けてくれてありがとう。 – Funlamb

0

はい、答えがjoesliceのものですが、ProjectオブジェクトのArrayListを調べ、各ProjectオブジェクトのprintProメソッドを呼び出すだけで済みます。

また、Project privateでインスタンス変数を作成する必要があります。指定されていない場合は、Javaでpublicに設定されます。その理由は、良いOOPコードはオブジェクトの状態をカプセル化し、状態をメソッドを呼び出すことによってのみ変更できるからです。

また、printProメソッドとprintProjectメソッドを持つことは意味がないとも思います。私はprintPro方法をただ持っているでしょうし、あなたが何かを印刷する必要がある場合にだけ実行します。

System.out.println(proj.printPro()); 

をそうしないと、あなただけの重複したコードを持つことになり、それがプロジェクトの外部で使用できる文字列を返すようprintProは、おそらくより有用ですクラス。コンソールまたはウィンドウへの印刷は、データを格納するクラスの一部であってはなりません。出力をConsoleViewという名前の別のクラスに表示するタスクを委任する必要があります。

あなたのやりたいことははっきりしないので、もう助けが必要な場合には助けてください。

これが役に立ちます。

+0

ありがとうございます。それは多くの意味があります。配列オブジェクトの1つだけをどのように印刷するかを知る必要があります。 – Funlamb

関連する問題