目的是把f数组的前20项输入到文件fin.txt中,再从fin.txt中内容输出到屏幕上.代码如下:
import java.io.*;
class fin{
public static void main(String[] argc)throws Exception{
        FileWriter fw=new FileWriter("fin.txt");
        FileReader fr=new FileReader("fin.txt");
            int c;
            int[] f=new int[20];
            f[0]=f[1]=1;
                for(int i=2;i<20;i++)
                f[i]=f[i-1]+f[i-2];
                
                for(int i=0;i<20;i++)
                 {
                     fw.write(f[i]);
                     fw.write(",");
                 }
                 fw.close();
                 while((c=fr.read())!=-1)
                 {
                     System.out.print((char)c);
                     System.out.print(",");
                 }
                 fr.close();
                 
}
}
但是输出到文件与屏幕上的却是乱码一堆.请问什么问题?

解决方案 »

  1.   

    错就错在楼主将数字直接写入文件中,而该数字并不是字符,而字符的Asscii码!看看下面的定义。楼主试图将一个字符数组写入文件再读出来就不会有乱码了。public void write(int c)
               throws IOException写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。 
    用于支持高效单字符输出的子类应重写此方法。 
    参数:
    c - 指定要写入字符的 int。
      

  2.   

    改成这样,可达到楼主要求:fw.write((char)(f[i]+'0'));
      

  3.   

    原因:fw.write(f[i]);你这句话传过去的是f[i]值的ASCII码值 
    如若f[i]此时的值为48  传过去就变成‘0’,若是65 传过去就变成‘A’解决办法 :我楼上楼上的那个以给出
      

  4.   

    import java.io.*;class Fin
    {
    public static void main(String[] argc)throws Exception
    {
    FileWriter fw=new FileWriter("fin.txt");
                      FileReader fr=new FileReader("fin.txt");
                      int c=0;
                      int[] f=new int[20];
                 f[0]=f[1]=1;
        for(int i=2;i<20;i++)
        {
         f[i]=f[i-1]+f[i-2];
         System.out.print(f[i]+",");
        }
        
        System.out.println();
                   
       for(int i=0;i<20;i++)
        {
         String vv=null;
         vv=Integer.toString(f[i]);
             fw.write(vv);
             fw.write(",");
        }
        fw.close();
        
       /** while((c=fr.read())!=-1)
        {
          System.out.print(c);
        //  System.out.print(",");
        }
        fr.close();
       */   try
        {
         char[] buf = new char[1024];
         int len = fr.read(buf);
         System.out.println(new String(buf,0,len));
        }
        catch(Exception e)
        {
              System.out.print(e.getMessage());
      }
                  
    }
    }
      

  5.   

    晕,楼主也太懒了。都告诉你write(int)的定义了。算我没考虑全面,正确的代码贴下面了。希望楼主以后在API函数有不懂的时候,可以先查查Java 的API文档import java.io.*;
    class fin{
    public static void main(String[] argc)throws Exception{
            FileWriter fw=new FileWriter("fin.txt");
            FileReader fr=new FileReader("fin.txt");
                int c;
                int[] f=new int[20];
                f[0]=f[1]=1;
                    for(int i=2;i<20;i++)
                    f[i]=f[i-1]+f[i-2];
                    
                    for(int i=0;i<20;i++)
                     {
                         fw.write(String.valueOf(f[i]));
                         fw.write(",");
                     }
                     fw.close();
                     while((c=fr.read())!=-1)
                     {
                         System.out.print((char)c);
                     }
                     fr.close();
                     
    }
    }
      

  6.   

    写入的时候你加个flush()应该会好点吧