[英]Outputting information without explicitly calling toString() in java
对于 println 中的第 6 步,我知道如何显式调用 toString 但如何在不显式调用 toString() 或使用任何访问器方法的情况下从数组中的当前学生输出学生信息?
import java.util.Scanner;
public class Students
{
private static Scanner input = new Scanner(System.in);
public static void main(String[] args)
{
Student[] students;
students = getStudents();
printStudents(students);
}
private static Student[] getStudents()
{
Student[] temp;
int how_many;
System.out.print("How many students? ");
how_many = input.nextInt();
purgeInputBuffer();
temp = new Student[input.nextInt()]; // Step 1 ???
for (int i = 0; i < temp.length; i++)
{
getStudent();
temp[i] = getStudent(); // Step 2
}
return temp; // Step 3
}
private static Student getStudent()
{
String name,
address,
major;
double gpa;
System.out.print("Enter name: ");
name = input.nextLine();
System.out.print("Enter address: ");
address = input.nextLine();
System.out.print("Enter major: ");
major = input.nextLine();
System.out.print("Enter GPA: ");
gpa = input.nextDouble();
purgeInputBuffer();
return new Student(name, address, major, gpa); // Step 4
}
private static void printStudents(Student[] s)
{
System.out.println();
for (int i = 0; i < s.length; i++) // Step 5
{
System.out.println(______); // Step 6
}
}
private static void purgeInputBuffer()
{
// ----------------------------------------------------
// Purge input buffer by reading and ignoring remaining
// characters in input buffer including the newline
// ----------------------------------------------------
input.nextLine();
}
}
name, address, major, gpa
为成员变量。 覆盖此类的toString()
方法。
public String toString() { return "Name: " + name + "\\n" + "Address: " + .... //whatever you want to print. }
每当您需要打印学生的详细信息时,请将其传递给println
方法:
System.out.println(obj); //where obj is a Student object.
在您的Stundent
类中重写toString()
方法,例如:
@Override public String toString() { return "Stundent [ Name: " + name + ", Address: " + address + ", Major: " + major + ", GPA: " + gpa + " ]"; }
并修改您的printStudents()
方法如下(您的第 6 步):
private static void printStudents(final Student[] s) { System.out.println(); for (final Student student : s) { System.out.println(student); } }
那么你的输出应该是这样的:
学生 [姓名:Name1,地址:Addr1,专业:Major1,GPA:3.0]
学生 [姓名:Name2,地址:Addr2,专业:Major2,GPA:3.5]
现在您看到toString()
方法将被隐式调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.