2017-02-02 13 views
0

私はスコアの種類を与えるポイントで別のオブジェクトを「収集」する簡単なプログラムを作成しようとしています。たとえば、「ポルシェ」にはユーザーが決めたポイントが与えられ、新しいポイントを入力すると、そのポイントが古い値に追加されます。それで、ポルシェ100点を与えてから50点を追加すると、合計点は150点になるはずです。プログラムはまた、異なる車の点数を合計して保存する必要があります(100点のBMWを追加する場合、 250(150ポイントはポルシェから来ます))。既存のポイントを上書きせずにオブジェクトにポイントを追加する

まず、私はArrayListを車で探しますが、新しいスコアを追加しようとすると、既存のものを新しい値で上書きします。

System.out.println("The name of the car: "); 
    String carName = readString(); 
    Car car = findCar(carName); 

    if(car == null){ 
     System.out.println("Car doesn't exist!"); 
     return; 
    } 

    System.out.println("Add more points for the car: "); 
    car.setPoints(readInt()); 
    carlist.add(car); 

私はこの問題を解決する簡単な方法があると思いますが、今の私は無知だと私のグーグルでスキルは私に何も結果を与えていません。

のreadInt()やreadString()は私のスキャナー

+0

'car.setPoints(car.getPoints()+ readInt());'? – IQV

+0

または単純に 'addPoint(int)'メソッドを作成します。これは禁止されていません。getterとsetterは標準ですが、他のメソッドを作成することもできます。 – AxelH

+0

@IQVありがとう!ハハ...オハイオ州の男私はそれを考えていたらいいと思う...フォローアップ - それは同じ車の重複を作成しているようです。スコアは更新する必要がありますが、50を追加して100を同じオブジェクトに追加すると、今度は同じ車のうち3つが得られますが、合計は同じです。同じオブジェクトにのみスコアを追加するには何が必要ですか? – zkulltrail

答えて

3

public int getPoints(){ 
    return points; 
} 

を次にインクリメント・コールを置き換えますここではセッターを持っています。

シンプルで既存の値を追加するメソッドを作成する必要があります。あなたがしたい場合は、負の値か何かを拒否し、ここでいくつかの検証を行うことができます

public void addPoint(int points){ 
    this.points += points; 
} 

は私が数値フィールドの単純な構文(かなり標準あまりにも)を使用します。

EDIT:第二の問題のために(これは別の質問でなければなりませんが、これは小さなミスである)

あなたはCar car = findCar(carName);でインスタンスを取得しているし、それがnullの場合は何もしません。しかし、いくつかのポイントを追加した後はcarlist.add(car);なので、findCarで削除しない限り、このリストに同じインスタンスを追加します。

+0

ありがとう!ハハ...オハイオ州の男私はそれについて考えてみたいです。 別の回答からの重複した回答: フォローアップ - 私は同じ車の重複を作成しているようです。スコアは更新する必要がありますが、50を追加して100を同じオブジェクトに追加すると、今度は同じ車のうち3つが得られますが、合計は同じです。同じオブジェクトにのみスコアを追加するには何が必要ですか? – zkulltrail

+0

@zkulltrailこれは別の問題ですが、更新後に車を追加するので、これは論理的です;)findCarがnullを返す場合は、単純に新しいインスタンスを追加することができます(返すメソッドを終了する代わりに) – AxelH

+0

もう一度ありがとう!すべての重複した回答を申し訳ありませんが、まだこのサイトをリースしています:) これはcarlist.add(car)を削除するだけで動作しました。 乾杯! – zkulltrail

0

Carクラスのメソッドの追加のためだけの方法です:あなたは

System.out.println("Add more points for the car: "); 
car.setPoints(car.getPoints()+readInt()); 
関連する問題