2017-04-03 13 views
0

名前を設定/変更するメソッドを実装したいと考えています。例:プリセット名は "Ben"です。メソッドを使用すると、名前を "Charly"に変更することができます。これまでの私のアプローチ:Javaメソッドを実装してユーザー名を設定する方法

public void setName (String name) 
{ 
name = ""; 
} 

私は名前を入力することができますが、私のJDK(BlueJのは)名前を保持していないメソッドを呼び出します。私は間違って何をしていますか?あなたの助けを前にありがとう。

+0

は、 'name'のフィールドを持っている、あなたは=「」' this.nameを行う必要があります。 ' –

答えて

0

あなたは(あなたがあなたのクラスのnameと呼ばれる参照変数を持っていると仮定した場合)、次のコードを変更する必要があります。

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

これは、Javaの変数シャドウイングと呼ばれています。例えば。同じ名前の2つの変数(すなわちローカルおよびインスタンス)がある場合、ローカルvarialbleは、インスタンス変数よりも優先され、したがって、などのステートメント:

name = ""; 

ローカル変数nameなく、インスタンス変数に値を割り当てます。インスタンス変数に値を代入するには、thisキーワードを使用して(値にアクセスして変更する)

+0

ありがとうございました。これは動作します! –

0

あなたのメソッドの中で、クラスオブジェクトの名前変数を変更する必要があります。ここでは、ユーザークラスを持っていて、その名前を更新したいexmapleです:あなたのクラスを想定し

public class user { 
String name; 
public user(){ 
    name = ""; 
} 

public void setName(String newName){ 
    name = newName; 
} 

}

関連する問題