2014-11-20 129 views
0

我有两个不同的类Student和StudentTest - Student类有;打印数组 - 覆盖toString()方法

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(); 

错误在第二种方法循环。

+0

_it将无法正常工作。你期望发生什么?究竟发生了什么? – 2014-11-20 18:12:34

回答

3

您会如何预期这项工作?

@Override 
public void toString(){ 
    return "Name: " + this.name; 
} 

它应该会给你一个编译错误。您正试图发回一个字符串,并且返回类型是void。当我尝试运行it_是不是非常有帮助

将其更改为

@Override 
public String toString(){ 
    return "Name: " + this.name; 
} 

更改您的主要方法

// Main method. 
public static void main(String [] args) { 
    Student[] students = createArray(); 
    populateArray(students); 
    displayArray(students) 
}