9.文件中有一组整数,要求排序后输出到另一个文件中
package com.xyd.java.lesson12;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
public class ReaderAndWriterDemo {
public static void main(String[] args) {
File source = new File("d:\\FileDemo1.java");
File target = new File("e:\\",source.getName());
readWrite(source,target);
}
private static void readWrite(File source, File target) {
int a[] =new int[8];
int i=0;
try {
Reader in = new FileReader(source);
BufferedReader bin = new BufferedReader(in);
Writer out = new FileWriter(target);
BufferedWriter bout = new BufferedWriter(out);
int data = bin.read();
while(data != -1) {
if(data!=32)
{a[i]=data;
i++;
}
data = bin.read();
}
bin.close();
sort(a);
for(int j=0;j<a.length;j++){
bout.write(a[j]);
bout.write(",");
}
bout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static int[] sort(int [] a){
for (int i=a.length-1; i>=1;i--) {
for(int j=0;j<=i-1;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}
}
出现了3个问题
1、原文件里的数为 2 9 8 5 10 9 7中间用空格隔开 但生成的文件里却是0,1,2,5,7,8,9,9即两位及两位以上的数字就会分开,怎么能让他们完整的输出啊?
2、感觉定义数组时数组长度不知咋确定,上面程序中那样感觉不太合理,长度太长的话前面就先打印一串逗号,太短就出现数组越界异常,有没办法能把原文件中的长度直接得到再创建数组?
3、如果原文件中数字间不是用空格的话这程序的话就不适用了?咋办??
package com.xyd.java.lesson12;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
public class ReaderAndWriterDemo {
public static void main(String[] args) {
File source = new File("d:\\FileDemo1.java");
File target = new File("e:\\",source.getName());
readWrite(source,target);
}
private static void readWrite(File source, File target) {
int a[] =new int[8];
int i=0;
try {
Reader in = new FileReader(source);
BufferedReader bin = new BufferedReader(in);
Writer out = new FileWriter(target);
BufferedWriter bout = new BufferedWriter(out);
int data = bin.read();
while(data != -1) {
if(data!=32)
{a[i]=data;
i++;
}
data = bin.read();
}
bin.close();
sort(a);
for(int j=0;j<a.length;j++){
bout.write(a[j]);
bout.write(",");
}
bout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static int[] sort(int [] a){
for (int i=a.length-1; i>=1;i--) {
for(int j=0;j<=i-1;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}
}
出现了3个问题
1、原文件里的数为 2 9 8 5 10 9 7中间用空格隔开 但生成的文件里却是0,1,2,5,7,8,9,9即两位及两位以上的数字就会分开,怎么能让他们完整的输出啊?
2、感觉定义数组时数组长度不知咋确定,上面程序中那样感觉不太合理,长度太长的话前面就先打印一串逗号,太短就出现数组越界异常,有没办法能把原文件中的长度直接得到再创建数组?
3、如果原文件中数字间不是用空格的话这程序的话就不适用了?咋办??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货