2017-09-19 9 views
-3

私は国の名前とその分類を(コードの最後に示されているように)印刷したいと思います。ただし、if文は機能しません。私はそれをコンストラクタから抜き出してみましたが、それはうまくいかず、私の主なメソッドで試してみると、変数はクラスCountryで定義されているので、とにかく動作しません。だから私はどのようにif文を使って分類を行うことができるかを尋ねたがっています。Java:このif-else文(コンストラクタ内)を使用するにはどうすればよいですか?

public class Exercise { 


public static void main(String[] args){ 
    Country Sweden = new Country("Sweden", 498000000000l,10000000); 
    Sweden.representcountry(); 
} 

public static class Country{ 
    String name; 
    long GDP; 
    int population; 
    int GDPCapita; 

    String classification; 

    public Country(String name, long GDP, int population){ 
     this.name = name; 
     this.GDP = GDP; 
     this.population = population; 
     GDPCapita = (int) (this.GDP/this.population); 
    } 

    // Getters and Setters 

    /* 
    if(GDPCapita >= 10000){ 
     classification = "Developed country"; 
    } 
    else { 
     classification = "Developing country"; 
    } 
    */ 


    final String END_OF_LINE = System.lineSeparator(); 
    public String representcountry(){ 
     System.out.println(this.name + ":" + END_OF_LINE // + classification 
       + "Population: " + + this.population + END_OF_LINE 
       + "GDP: " + this.GDP + END_OF_LINE 
       + GDPCapita + " per capita"); 
     return ""; 
    } 
} 
} 
+1

どのようにそれが "機能しない" のでしょうか? GDPCaptiaが計算された後、コンストラクタで 'if ... else'ステートメントを挿入するので、うまくいくはずです。 – AntonH

+0

これはすでにhttps://stackoverflow.com/questions/13202672/if-else-statements-inside-a-java-constructor – user3170321

答えて

4

あなたはちょうどこのようにします:

public Country(String name, long GDP, int population){ 
    this.name = name; 
    this.GDP = GDP; 
    this.population = population; 
    GDPCapita = (int) (this.GDP/this.population); 
    if(GDPCapita >= 10000){ 
     classification = "Developed country"; 
    }else { 
     classification = "Developing country"; 
    } 
} 

三項演算子を使用することにより、あなたがもし/他を置き換えることができ、彼は短いですが、あなたが理解する必要があり、それのように、これはヒント:

classification = GDPCapita >= 10000 ? "Developed country" : "Developing country"; 
1

なぜ「ここ」というキーワードを使用しますか? GDPCapitaと分類を除いて?

public Country(String name, long GDP, int population){ 
// Getters and Setters 

    this.name = name; 
    this.GDP = GDP; 
    this.population = population; 
    this.GDPCapita = (int) (this.GDP/this.population); 
    if(this.GDPCapita >= 10000){ 
     this.classification = "Developed country"; 
    } 
    else { 
     this.classification = "Developing country"; 
    } 
} 
+0

に答えている私はあなたがすべての分類のための個別のメンバ変数を必要としないと言うでしょう。 GPDCapitaから値を取得するゲッタを持つ方がよいでしょう。セッターの必要はありません。 – duffymo

+0

あなたは正しいです:) – cretthie

関連する問題