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));
答案 0 :(得分:0)
您宣布events
为ArrayList
,意味着它包含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(" ");
}