2011-06-23 11 views
-2
class Main 
{ 

    public static void main() 
    { 
     Student one=new Student(); 
     one.setName("firstname"); 

     AllStudent all=new AllStudent(); 
     all.add(one); 

     // Now changing name of student 

     one.setName("secondname"); 

     // Here I getAll Students 

     Collection<Student> cs=all.getAll(); 


      java.util.Iterator<Student> itr=cs.iterator(); 


      while(itr.hasNext()){ 
       Student rgc=itr.next(); 
       System.out.println(rgc.getName()); 
      } 
    } 

    clas public Student 
    { 

     String name; 

     public void setName(String name) 
     { 
      this.name=name; 
     } 

     public String getName() 
     { 
      return name; 
     } 
    } 

    clas public AllStudent 
    { 

     Collection<Student> stds; 

     public void addAll(Collection<Student> stds) 
     { 
      this.stds=stds; 
     } 

     public void add(Student std) 
     { 
      stds.add(std); 
     } 

     public Collection<Student> getAll() 
     { 
      return stds; 
     } 
    } 
} 

これで「firstname」が表示されます。参照はクラスに渡された後getUpdatedされていませんか?

しかし、私は "secondname"を取得したいと思います。だから私は何をしなければならないのですか? APIの変更や新しいクラスを作成する場合は?

+1

はのコンストラクタを表示secondnameを得ました学生クラスと全学生クラス。問題はあなたのコンストラクタにあると私に伝えます...もちろん、問題は前述のコードのどこかにあります。 –

+0

これはまったく動作しません。あなたはコレクション 'stds'を決して初期化しません。 – trutheality

+0

'secondname'をどういう意味ですか?あなたは 'クラスの学生 'だけに名前があります。生徒の詳細情報を保存したい場合は、このクラスに追加してください。それで十分だと思います。 – Balanivash

答えて

1

それは私はちょうど私が実行したこと

package pkg; 

import java.util.Collection; 
import java.util.HashSet; 

public class Main { 
    public static void main(String arg[]){ 
     Student one=new Student(); 
     one.setName("firstname"); 

     AllStudent all=new AllStudent(); 
     all.add(one); 

     // Now changing name of student 

     one.setName("secondname"); 

     // Here I getAll Students 

     Collection<Student> cs=all.getAll(); 

     java.util.Iterator<Student> itr=cs.iterator(); 

     while(itr.hasNext()){ 
      Student rgc=itr.next(); 
      System.out.println(rgc.getName()); 
     } 

    } 
    static class Student{ 
     private String name; 
     void setName(String name){ 
      this.name = name; 
     } 
     String getName(){ 
      return name; 
     } 
    }  
    static class AllStudent{ 
     Collection<Student> stds = new HashSet<Main.Student>(); 

     void addAll(Collection<Student> stds){ 
      this.stds = stds; 
     } 

     void add(Student std){ 
      this.stds.add(std); 
     } 
     public Collection<Student> getAll(){ 
      return stds; 
     } 

    } 
} 

で何かを実装あなたのコードだ、これを試してみて

+0

静的なので、AllStudentとStudentオブジェクトがヒープとスタックに保存されている場所を教えてもらえますか?どのように私は第二の名前を得た。 – Nitul

+0

@Nitulオブジェクトは値として追加されませんが、オブジェクトを参照として追加します。ここでは、これについての詳細な説明です。http://www.chetanasforum.com/index.php?showtopic=1474 – Pratik

+0

私のStudent、AllStudent、Mainクラスは個別パッケージになっているとしますか? – Nitul

1

問題は、実際にコンパイルして実行するプログラムを作成していないことです。あなたがコンパイルエラーを修正する場合は、mainの署名を変更し、あなたのコレクションを初期化しますが、プログラムはいつもあなたが望んでいる

secondname 

を出力見つかります。

1
public class Student 
{ 
    private String name; 
    public Student(String pName) 
    { 
     name = pName; 
    } 

    public void setName(string pName) 
    { 
     name = pName; 
    } 

    public String getName() 
    { 
     return name; 
    } 

    public String toString() 
    { 
     return name; 
    } 
} 

public class StudentCollection 
{ 
    private LinkedList<Student> studs; 

    public StudentCollection() 
    { 
     studs = new LinkedList<Student>(); 
    } 

    public void add(Student stud) 
    { 
     if (stud != null) 
     { 
      studs.addLast(stud); 
     } 
    } 
} 

public class Driver 
{ 
    public static void main(String[] args) 
    { 
     Student one = new Student("Matt"); 
     StudentCollection students = new StudentCollection(); 
     students.add(one); 

     one.setName("Kyle"); 
     for(Student stud : students) 
     { 
      System.out.println(stud); 
     } 
    } 
} 

OUTPUT:

カイル

関連する問題