2012-01-25 4 views
-1

すべての出現箇所を、ユーザーが新しい名前で指定した名前に置き換える必要があります。ここ は私のコードです:javaメソッドの変数を置き換える方法

public class Person 
{ 
    public Person() {} 

    public Person(String name, String address, String email, String phone) 
    { 
    this.name = name; 
    this.address = address; 
    this.email = email; 
    this.phone = phone; 
    } 

    String name = ""; 
    String address = ""; 
    String email = ""; 
    String phone = ""; 

    public String toString() 
    { 
    return "Name: " + name + " Address: " + address + " Email: " + email + " Phone: " + phone; 
    } 
} 


class Student extends Person 
{ 
    public Student() {} 

    public Student(String studentName, String studentAddress, String studentEmail, String studentPhone) 
    { 
    this.studentName = studentName; 
    this.studentAddress = studentAddress; 
    this.studentEmail = studentEmail; 
    this.studentPhone = studentPhone; 
    } 

    public String toString() 
    { 
    String studentInfo = super.toString(); 
    return studentInfo.replaceAll(name, studentName); 
    } 

    //int grade = 0; COME BACK TO THIS 
    String studentName = ""; 
    String studentAddress = ""; 
    String studentEmail = ""; 
    String studentPhone = ""; 
    public static final int freshman = 0; 
    public static final int sophomore = 1; 
    public static final int junior = 2; 
    public static final int senior = 3; 
} 

今、それはユーザーが通過する名前を持つすべての文字に置き換えられます。実際の名前を置き換えるにはどうすればいいですか?

+0

'Student'クラスは等「studentName」の変数の第2のセットを必要としない - それは単に使用することができますそれは(Student)がPersonのサブクラスなので、Personクラスの "name"変数です。 'Student'コンストラクタは単に' this.name = studentName'を行うことができます。そして、Person.toStringはすでに正しいことをしているので、Studentは 'toString'をオーバーライドする必要もありません。 –

答えて

4

私にとって、それはひどい考えです。代わりに、私はこのような何かを示唆:

// In the student class. 
public String toString() 
{ 
    return "Name: " + studentName + 
     " Address: " + studentAddress + 
     " Email: " + studentEmail + 
     " Phone: " + studentPhone; 
} 

またはこの

// In the student class. 
public String toString() 
{ 
    return "Name: " + studentName + 
     " Address: " + address + 
     " Email: " + email + 
     " Phone: " + phone; 
} 
+0

私はそれを人のtoString()メソッド – Josh

+0

という名前でovverideする必要があります。メソッド名の上のコメントに注意してください。 "学生クラスで"。 – DwB

+0

なぜ "Student"は "studentName"変数を持っていますか?スーパークラスから "name"を使うことができます。 –

0

studentInfo.replaceAll(name, studentName)ではなくstudentInfo.replace(name, studentName)を呼び出します。

+0

私はこれを試して、newNameを最初に置きます。次に、studentInfoのすべてを出力します。 – Josh

+0

これは、 'name'の最初のオカレンスを置き換えます。必ずしも彼が望むものではありません。 – bdares

関連する問題