下面这个程序实现向文件写入Fibonaci数列的前20项,怎样才能把写入的20项每5项为一行,分4行写入文件里?
import java.io.*;
public class c14_4 {
/*
* 将Fibonaci数列的前20项输入到一个文件里,
*/
public static void main(String[] args) throws IOException{
File dir=new File("homeworkData");
dir.mkdir();
File f=new File(dir,"c14_4.txt");
f.createNewFile();
DataOutputStream dout=new DataOutputStream(new BufferedOutputStream(
new FileOutputStream(f)));
long[] fibonaci=new long[20];
fibonaci[0]=1;
fibonaci[1]=1;
for(int i=2;i<fibonaci.length;i++) //用数组来存储Fibonaci数列的前20项
{
fibonaci[i]=fibonaci[i-1]+fibonaci[i-2];
}
for(int i=1;i<=fibonaci.length;i++) //将Fibonaci数列的前20项写入到文件中
{
dout.writeLong(fibonaci[i-1]);
}
dout.flush();
dout.close();
}
}
import java.io.*;
public class c14_4 {
/*
* 将Fibonaci数列的前20项输入到一个文件里,
*/
public static void main(String[] args) throws IOException{
File dir=new File("homeworkData");
dir.mkdir();
File f=new File(dir,"c14_4.txt");
f.createNewFile();
DataOutputStream dout=new DataOutputStream(new BufferedOutputStream(
new FileOutputStream(f)));
long[] fibonaci=new long[20];
fibonaci[0]=1;
fibonaci[1]=1;
for(int i=2;i<fibonaci.length;i++) //用数组来存储Fibonaci数列的前20项
{
fibonaci[i]=fibonaci[i-1]+fibonaci[i-2];
}
for(int i=1;i<=fibonaci.length;i++) //将Fibonaci数列的前20项写入到文件中
{
dout.writeLong(fibonaci[i-1]);
}
dout.flush();
dout.close();
}
}
public class c14_4 {
/*
* 将Fibonaci数列的前20项输入到一个文件里,
*/
public static void main(String[] args) throws IOException{
File dir=new File("homeworkData");
dir.mkdir();
File f=new File(dir,"c14_4.txt");
f.createNewFile();
PrintWriter pw=new PrintWriter(new FileWriter(f));
long[] fibonaci=new long[20];
fibonaci[0]=1;
fibonaci[1]=1;
for(int i=2;i <fibonaci.length;i++) //用数组来存储Fibonaci数列的前20项
{
fibonaci[i]=fibonaci[i-1]+fibonaci[i-2];
}
for(int i=1;i <=fibonaci.length;i++) //将Fibonaci数列的前20项写入到文件中
{
pw.print(fibonaci[i-1]+" ");
if(i % 5==0 ) pw.println();//本行已输出5个,则换行.
}
pw.flush();
pw.close();
}
}
c14_4.txt中文件内容是:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
用PrintStream也许就可以了,它里面有println()、print(long x)两个方法,应该可以了吧,大家的建议呢?我还没有去测试过,到底行不行,希望大家也去测试一下。
吃了饭我再测试吧。
public static void main(String[] args) throws Throwable {
File dir=new File("homeworkData");
dir.mkdir();
File f=new File(dir,"c14_4.txt");
f.createNewFile();
DataOutputStream dout = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f)));
long[] fibonaci = new long[20];
fibonaci[0] = 1;
fibonaci[1] = 1;
for (int i = 2; i < fibonaci.length; i++) // 用数组来存储Fibonaci数列的前20项
{
fibonaci[i] = fibonaci[i - 1] + fibonaci[i - 2];
}
for (int i = 1; i <= fibonaci.length; i++) // 将Fibonaci数列的前20项写入到文件中,如果到第五个则加一个换行
{
dout.writeBytes(String.valueOf(fibonaci[i-1])+" "+(i%5==0?"\r\n":""));
}
dout.flush();
dout.close();
}结果:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765 要的是不是这样的,不过为什么非得要用字节流呢?
我是初学IO包,不太清楚该怎么做啊?
感觉把换行这个要求去掉更好,你说呢?干脆用DataOutputStream写进去的是long类型的数据,用DataInputStrean读long类型的数据