2010-05-08 75 views
2

我一直对这个assignemnt这里的代码:toString()方法的问题

public class Student 
{ 
private String fname; 
private String lname; 
private String studentId; 
private double gpa; 

public Student(String studentFname,String studentLname,String stuId,double studentGpa) 
{ 
    fname  = studentFname; 
    lname  = studentLname; 
    studentId = stuId; 
    gpa  = studentGpa; 
} 

public double getGpa() 
{ 
    return gpa; 
} 

public String getStudentId() 
{ 
    return studentId; 
} 

public String getName() 
{ 
    return lname + ", " + fname; 
} 
public void setGpa(double gpaReplacement) 
{ 
    if (gpaReplacement >= 0.0 && gpaReplacement <= 4.0) 
    gpa = gpaReplacement; 
    else 
    System.out.println("Invalid GPA! Please try again."); 
    System.exit(0); 
} 
} 

现在我需要创建一个返回一个字符串格式化像这样一个toString()方法:

 
Name: Wilson, Mary Ann 
ID number: 12345 
GPA: 3.5 
+0

你应该指出你的教授,这是不好的做法,具有多线为字符串 – sixtyfootersdude 2010-05-08 20:38:03

回答

3
@Override 
public String toString() { 
    return "Name: " + getName() + "\n" + 
      "ID Number: " + studentId + "\n" + 
      "GPA: " + gpa; 
} 
+0

非常感谢! – user335940 2010-05-08 01:37:34

2

看看你的getName方法。你可以为toString使用相同的想法(并且实际上是getName本身)。你可能不知道的一件事是\ n表示换行符。所以“foo \ nbar”是foo,然后是换行符,然后是bar。

2

只需添加该方法即可。

public String toString() { 
    // TODO: write code according requirements. 
} 

如果您的实际问题,更是你不知道该怎么做,那么你应该在你的问题更具体。你例如不知道如何在String中插入换行符?那么,你可以使用\n

return String.format(
     "Name: %s, %s\nID number: %d\nGPA: %f", fname, lname, studentId, gpa); 

这就是说,这System#exit()通话是相当显着。最终用户是否真的必须重新启动整个应用程序才能看到一个简单的输入错误?

+1

其实它退出不管。 – 2010-05-08 00:55:55

+0

@Matthew:你怎么知道的? – BalusC 2010-05-08 00:56:54

+2

由于'System.exit'在条件之外。 – 2010-05-08 00:58:08

2
public String toString() { 
    String output = "Name: " + lname + ", " + fname + "\n" + 
        "ID number: " + studentId + "\n" + 
        "GPA: " + gpa + "\n"; 
    return output; 
}