java这段代码有哪里错了吗?

import java.io.*;
public class TestIO{
public static void main(String args[]){
int i=0;
File diary=new File("d:/diary.txt");
InputStreamReader a=new InputStreamReader(System.in);
FileWriter b=new FileWriter(diary);
while((i=a.read())!=-1){
b.write(i);
}
FileReader out =new FileReader(diary);
while((i=out.read())!=-1){
System.out.println(char(i));
}
a.close();
out.close();
}
}

错误1:

TestIO.java:13: 需要 ".class"
            System.out.println(char(i));
                                   ^
TestIO.java:13: 不是语句
            System.out.println(char(i));
                                    ^
TestIO.java:13: 需要 ';'
            System.out.println(char(i));
                                     ^
3 错误

错误2:

TestIO.java:7: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出
        FileWriter b = new FileWriter(diary);
                       ^
TestIO.java:8: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出
        while ((i = a.read()) != -1) {
                          ^
TestIO.java:9: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出
            b.write(i);
                   ^
TestIO.java:11: 未报告的异常 java.io.FileNotFoundException;必须对其进行捕捉或声明以便抛出
        FileReader out = new FileReader(diary);
                         ^
TestIO.java:12: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出
        while ((i = out.read()) != -1) {
                            ^
TestIO.java:15: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出
        a.close();
               ^
TestIO.java:16: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出
        out.close();
                 ^
7 错误

完善如下:

import java.io.*;
public class TestIO {
    public static void main(String args[]) throws IOException {
        int i = -1;
        String diary = "d:/diary.txt";
        InputStreamReader a = new InputStreamReader(System.in);
        FileWriter b = new FileWriter(diary);
        while ((i = a.read()) != '\n') {
            b.write(i);
        }
        b.flush();
        b.close();
        a.close();
        FileReader out = new FileReader(diary);
        while ((i = out.read()) != -1) {
            System.out.print((char)i);
        }
        out.close();
    }
}

追问

(i = a.read()) != '\n'为什么这个是不等于'\n'啊?还有flush()是干什么用的啊?

追答

    因为如果不等于\n,换行的话,那么你的程序永远无法停止了,因为你回车还是有值,始终有值,也就是说你一直要输入;\n只是我处理的一种方式,你也可以是0或者其他标记;

    flush是将流对象中的内容干干净净的输出出来,以免缓存其中,查看api即可;

    最后采纳即可。

追问

哦,谢谢,我后来用readline()和exit来终止的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-10
没有抓取异常啊
IO的操作都是要try{}catch{}的追问

我刚写了try catch 还是没用

追答

System.out.println(i+"");

相似回答