我有一个测试文件,根据它,我需要构建我的程序,测试文件如下所示。然而,我被s1.showDetails( System.out )弄糊涂了;我从来没有在参数中遇到过System.out,任何人都可以帮助我。怎么处理它?当我尝试编写showDetails()时,编译器写错了。我的学生代码在这下面谢谢!
import java.util.*;
public class Q2 {
public static void main(String [] args)
{
// Start on section A
System.out.println("Question 2");
System.out.println("Start on part A");
Student s1 = new Student("John", "Smith", 42);
s1.showDetails(System.out);
Course cs = new Course("Computer science");
}
}
public class Student {
private String name;
private String familyName;
private int moduleMark;
private int total;
protected Student(String name, String familyName, int moduleMark)
{
this.name = name;
this.familyName = familyName;
this.moduleMark = moduleMark;
}
public String getName()
{
return name;
}
public String getFamilyName()
{
return familyName;
}
public int getModuleMark()
{
return moduleMark;
}
public String showDetails()
{
return (this.name + " " + this.familyName + " " + moduleMark + total);
//print(name);
}
}
发布于 2012-01-04 06:05:36
这个错误很好地描述了问题所在。
类型学生中的方法showDetails()不适用于Q2.main(Q2.java:9)中的参数(PrintStream)
该程序尝试使用System.out调用您的方法,而该方法恰好是一个PrintStream。因此,将您的showDetails更改为
public String showDetails(PrintStream out) {
out.println(this.name + " " + this.familyName + " " + moduleMark + total);
}
这允许测试人员(我假设有一个程序可以测试您的赋值的正确性)给您任何PrintStream,System.out或任何其他PrintStream。
发布于 2012-01-04 06:03:03
与其他变量一样,System.out
也是一个变量。
System是一个类
out是类型为PrintStream
的System
中的public
static
变量。因此,您可以使用System.out
访问它
所以System.out.println(..)
只是一个对PrintStream
的println(..)
函数的调用
因此,您的函数应该如下所示:
public String showDetails(PrintStream stream) {
...
}
发布于 2012-01-04 06:02:00
该错误实质上意味着编译器没有找到带有PrintStream
类型参数的名为showDetails的方法。您不需要将System.out
传递给showDetails()
方法。编写showDetails()
的正确方法如下所示。阅读有关System.out的信息。
public void showDetails()
{
System.out.println(this.name + " " + this.familyName + " " + moduleMark + total);
}
https://stackoverflow.com/questions/8719188
复制相似问题