写入文件时出现问题

时间:2017-05-01 09:06:25

标签: java

import java.util.*;
import java.io.*;

public class comparing{

static ArrayList <compare> events = new ArrayList<compare>();

public static void main(String[]args){

  try{
     Scanner in = new Scanner(new File("events.txt"));
     File output = new File("chines.txt");
     Scanner sc = new Scanner(output);
     PrintWriter printer = new PrintWriter(output);

     while(in.hasNext()){

        int temp = in.nextInt();
        String temptwo = in.nextLine();
        //String s = ;

        events.add(new compare(temp,temptwo));
     //System.out.println("Next word is:  " + temp);

        Collections.sort(events);
        for(int i = 0;i<events.size();i++){

           printer.write(events.get(i));
           System.out.println(events.get(i));
        }
     }
  }
  catch(Exception e){
     System.out.println("Invalid file name");
  }
}

我上面的代码从文件中读取数据,然后将数据打印出来。我想要做的是将这个已排序的数据写入另一个文件,但我不断收到以下错误:

  comparing.java:27: error: no suitable method found for write(compare)
               printer.write(events.get(i));  

3 个答案:

答案 0 :(得分:0)

您宣布eventsArrayList,意味着它包含java.lang.Object元素,因此printer.write(java.lang.Object)是被搜索的内容编译器。

您正在添加未公开课程compare的对象,因此即使声明ArrayList<compare>也无济于事。希望您的比较类具有有意义的toString,以便您可以使用ArrayList<compare>个事件,并结合printer.write(event.toString());

答案 1 :(得分:0)

请参阅the docs 没有write(Object)方法。您可以将其更改为write(events.get(i).toString())以将其首先转换为字符串。

或者,使用print代替write获取更多输入选项。见write() vs print()
它可以将对象作为参数,并为您调用String.valueOf(obj)方法:

printer.print(events.get(i));

答案 2 :(得分:0)

添加此代码而不是循环

           for (int i = 0; i < events.size(); i++) 
            {
                printer.write(String.valueOf(events.get(i)));
                out.write(" ");
            }