[英]Printing arrays - overriding toString() method
我有兩個不同的班級,Student和StudentTest-學生班級有;
public class Student {
// Data Members
private String name; // The name of this student
private long idNumber; // The ID number of this student
// Constructs a new Student with passed name and ID number parameters.
public Student(String studentName, long studentIDNumber) {
name = studentName;
idNumber = studentIDNumber;
}
// Returns the name of this student.
public String getName() {
return name;
}
// Returns the ID number of this student.
public long getIDNumber() {
return idNumber;
}
// Sets the name of this student.
public void setName(String studentName) {
name = studentName;
}
// Sets the ID number of this student.
public void setIDNumber(long studentIDNumber) {
idNumber = studentIDNumber;
}
@Override
public String toString(){
return "Name: " + this.name;
}
} // end class
StudentTest類具有3種不同的方法:1.要求用戶輸入數組的大小,然后創建類型為Student的數組; 2.要求用戶用名稱和ID號填充數組; 3.要求顯示數組的內容。
import java.util.Scanner;
public class StudentTest {
// Main method.
public static void main(String [] args) {
Student[] students = createArray();
populateArray(students);
displayArray(students);
}
// Method that asks user for size of array.
public static Student[] createArray() {
System.out.println("Enter size of array: ");
Scanner userInputEntry = new Scanner(System.in);
int inputLength = userInputEntry.nextInt();
Student students[] = new Student[inputLength];
return students;
}
// Method that asks user to populate array.
public static void populateArray(Student [] array) {
for(int i = 0; i < array.length; i++) {
array[i] = new Student();
System.out.println("Enter student name: ");
Scanner userInputEntry = new Scanner(System.in);
array[i].setName(userInputEntry.next());
System.out.println("Enter student ID number: ");
array[i].setIDNumber(userInputEntry.nextLong());
}
}
// Method that displays contents of array.
public static void displayArray(Student[] array) {
for(int i = 0; i < array.length; i++){
System.out.println(array[i].toString());
}
}
}
當我嘗試運行它時,出現關於
array[i] = new Student();
在第二種方法的for循環中。
您希望它如何工作?
@Override
public void toString(){
return "Name: " + this.name;
}
它應該給您一個編譯錯誤。 您正在嘗試發送回一個字符串,並且返回類型為空。
更改為
@Override
public String toString(){
return "Name: " + this.name;
}
將您的主要方法更改為
// Main method.
public static void main(String [] args) {
Student[] students = createArray();
populateArray(students);
displayArray(students)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.