2016-10-15 7 views
-3

私は初心者ですが、なぜこのコードはnullを返しますか?コンストラクタに何が間違っていますか?私は名前を設定しましたが、sysoutはnullを返します。コンストラクタエラー、セッタが機能しない(Java)

public class word { 

    String name; 
    int frequency; 
    double rel_freq; 

    word(String n, int a, double c) { 
     String name = n; 
     int frequency = a; 
     double rel_freq = c; 
    } 

    public static void main(String[] args) { 

     word maxwell = new word("bobo", 25, 40); 
     System.out.println(maxwell.name); 
    } 
} 

答えて

3

オブジェクト変数を使用する代わりに、コンストラクタに新しい変数を宣言します。

word(String n, int a, double c) { 
    name=n; 
    frequency=a; 
    rel_freq=c; 
} 
1

から
変更それはコンストラクタは、クラスのインスタンス変数と同じ名前であるローカル変数を宣言します。コンストラクタ内のローカルを嫌う人はいません。

つまり、これを使用してください: "name = n"。これのInatead: "String name = n"。

-1
package iran; 

public class word { 

    String name; 
    int frequency; 
    double rel_freq; 

    word(String n, int a, double c) { 
     this.name = n; 
     this.frequency = a; 
     this.rel_freq = c; 
    } 

    public static void main(String[] args) { 

     word maxwell = new word("bobo", 25, 40); 
     System.out.println(maxwell.name); 
     System.out.println(maxwell.frequency); 
     System.out.println(maxwell.rel_freq); 
    } 
} 

あなたのローカル変数は、インスタンス変数の自己 // https://telegram.me/javalike

enter image description here

を設定する必要があります
関連する問題