java print stream和printwriter

时间:2011-05-06 03:23:33

标签: java

我被困在为什么我的程序无法工作,我试图打印到文件但是,它说student[i].listCourses(System.out);我实际上需要它打印到test.txt文件但我尝试放入outputFile,它不起作用

   System.out.println("Please Enter A FileName");
  // Create a PrintWriter object and open the file.
  PrintWriter outputFile = new PrintWriter("test.txt");

  // Get data and write it to the file.
  // Continue reading till a blank line is entered
  int i=0;  
  do
  {

    while ((student[i] != null)&&(i <= student.length)){
        student[i].addCourse(course[i]);
        outputFile.println(student[i].toString());
        student[i].listCourses(System.out);
        i++;
    }

这就是宣布列表课程的方式

public void listCourses(PrintStream p) {
        for (Course crs: courses)
            if (crs != null)
                p.println(crs);
    }

2 个答案:

答案 0 :(得分:0)

这是一个问题

while ((student[i] != null)&&(i <= student.length)){

让我们假设i == student.length,会发生什么?

答案 1 :(得分:0)

我假设你的代码目前还没有为你编译。问题是,您的outputFilePrintWriter,而System.out是PrintStream。这些不可互换。查看每个文档页面上的继承层次结构:

http://download.oracle.com/javase/6/docs/api/java/io/PrintWriter.html

http://download.oracle.com/javase/6/docs/api/java/io/PrintStream.html

如果您需要对两个对象使用相同的功能,则必须重新考虑您传入的内容(例如OutputStream代替System.outFileOutputStream或制作两个函数,一个接受PrintWriter,另一个接收PrintStream