2017-05-08 432 views
1

私は最初のJavaプロジェクトとして別の都市を見つける小さなプログラムを作ろうとしています。Java - 代入の左辺は変数でなければなりません

私は、クラス 'City'から私のクラス 'GPS'の変数にアクセスしたいが、私はこのエラーが出てくる。割り当ての左側は変数でなければならない。私がここで間違っていることと、そのような間違いを将来どのように回避するかについて、誰でも私に説明することができます。

public class Gps { 
    private int x; 
    private int y; 
    private int z; 

    public int getX() { 
    return this.x; 
    } 

    public int getY() { 
    return this.y; 
    } 

    public int getZ() { 
    return this.z; 
    } 
} 

座標を持っている必要があり

そして、このクラスのCitiy '(私はプライベートのような変数を残しておきたい):

class City { 
    Gps where; 

    Location(int x, int y, int z) { 
    where.getX() = x; 
    where.getY() = y; //The Error Here 
    where.getZ() = z; 
    } 
} 
+0

'int'sはプライベートです。あなたのクラスはコンパイルされません – Compass

+0

プライベートメンバーを変更するにはセッターを使う必要があります(setterを作成してください) Gpsの –

答えて

2

エラーが自身のために語っています:あなたは値を割り当てることはできませんフィールドや変数ではないものに変換します。 gettersはgetringの値をクラスに格納しています。 Javaは戻って値を格納するに対処するためセッターを使用しています。

public int getX() { 
    return x; 
} 
public void setX(int x) { 
    this.x = x; 
} 

今、あなたはセッターを呼び出すことによって値を設定することができます。

City(int x, int y, int z) { 
    where.setX(x); 
    ... 
} 

を、それがGpsを作るためしかし、このソリューションは、理想的ではありません変更可能。あなたは、コンストラクタを追加することによって、不変、それを維持することができます

public Gps(int x, int y, int z) { 
    this.x = x; 
    this.y = y; 
    this.z = z; 
} 

Cityワンショットでwhereを設定することができます。

City(int x, int y, int z) { 
    where = new Gps(x, y, z); 
} 
+0

これは私のために働いた。お手伝いありがとう。最後の1つの質問をしてもよろしいですか。都市のゲッターでGPSのxを呼びたいのですが? :) – Baldr

+0

@Baldrゲッターには通常の方法でアクセスできます。 'public int getX(){return where.getX();}'別のアプローチは 'where'を発行することです。 'public Gps getWhere(){return where;}'呼び出し元は次のようにXを取得します: 'myCity.getWhere()。getX()' – dasblinkenlight

+0

ありがとう!私はあなたの答えを受け入れた: – Baldr

2

はゲッターとプロパティを設定しないでください。それはそうするべきです:

public class Gps { 
    private int x; 
    private int y; 
    private int z; 

    public int getX() { 
     return this.x; 
    } 

    public int getY() { 
     return this.y; 
    } 

    public int getZ() { 
     return this.z; 
    } 

    public void setX(int x) { 
     this.x = x; 
    } 

    public void setY(int y) { 
     this.y = y; 
    } 

    public void setZ(int z) { 
     this.z = z; 
    } 
} 


class City { 
    Gps where; 

    City(int x, int y, int z) { 
     this.where = new Gps(); 
     where.setX(x); 
     where.setY(y); 
     where.setZ(z); 
    } 
} 
+0

私はそれを試してみましょう。ありがとうございました :) – Baldr

関連する問題