2017-06-28 11 views
0

forループを使用してドライバのインスタンスをドライバ配列に追加しようとしました。各ドライバには、forループによって収集される3つの基本変数があります。ループが実行されると、最後のドライバの詳細が配列のすべてのインデックスに格納されます!私はそれを得るために私は個々のドライバをアレイに追加することができます。forループを使用して配列にオブジェクトを追加すると、最後に追加されたオブジェクトがすべてのインスタンスに使用されます

public static void addDriver(Driver[] d) {  //method using for loop to add drivers 


    for(int i = 0; i < d.length; i++) { 


     String name, DOB, occupation; 

     System.out.println("Please Enter Driver Name"); 
     name = kb.nextLine(); 

     System.out.println("Please Select Driver Occupation"); 
     System.out.println("1: Chauffeur" + "\n2: Accountant"); 
     int choice = kb.nextInt(); 
     kb.nextLine(); 

     if (choice == 1) { 
      occupation = "Chauffeur"; 
     } else { 
      occupation = "Accountant"; 
     } 

     System.out.println("Please Enter Driver D.O.B"); 
     DOB = kb.nextLine(); 

     d[i] = new Driver(name, occupation, DOB); 

    } 
} 

ご協力いただきありがとうございます。

編集...ここ

は、mainメソッドのコードですが、私はdriverNumと呼ばれる別の方法からの配列のサイズを取得します。ここ

public static void main(String[] args) { 

    int drivers = driverNum();  //Setting size of the array 

    Driver[] d = new Driver[drivers];  //creating new array using number of drivers to be insured 

    addDriver(d);  //calling method to add drivers to array 

    for(int x = 0; x < d.length; x++) 
    { 
     System.out.println(d[x].toString()); 
    } 

} 

私はそれが正しいと思ったので、私は使用しているドライバーのクラスは...

public class Driver { 

static String name, occupation, DOB; 

public Driver() 
{ 
    name = ""; 
    occupation = ""; 
    DOB = ""; 
} 

public Driver(String name, String occupation, String DOB) 
{ 
    this.name = name; 
    this.occupation = occupation; 
    this.DOB = DOB; 
} 

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

public String getName(Driver d) 
{ 
    return name; 
} 

public void setOccupation(String occupation) 
{ 
    this.occupation = occupation; 
} 

public String getOccupation() 
{ 
    return occupation; 
} 

public void setDOB(String DOB) 
{ 
    this.DOB = DOB; 
} 

public String getDOB() 
{ 
    return DOB; 
} 

public String toString() 
{ 
    String s; 

    s = "Name: " + name; 
    s = s + "\nOccupation: " + occupation; 
    s = s + "\nDOB: " + DOB; 

    return s; 
} 
} 

アイブ氏は、今しばらくの間、この上で、私の頭を悩まれています。これまでの助けてくれてありがとう!あなたのDriverクラスで

+0

ループの前に 'd.length'の値は何ですか? – MaxZoom

+0

何かが欠けていない限り、これはうまくいくようです。このメソッドを呼び出す場所にコードを投稿し、その結果を印刷できますか? –

+0

ここに間違いはないと思います。 @ JamalHが言ったように、このメソッドを呼び出すコードを投稿してください。 –

答えて

1

、あなたは3つのグローバル変数、nameoccupation、およびstaticなどD.O.Bを定義しました。これは、その変数の値を変更するたびに、そのクラスの複数のインスタンスを作成したとしても、プログラム内でどこでもが変更されることを意味します。静的宣言を取り除くだけで問題は解決します。

関連する問題