您的位置:首页 > 编程语言 > Java开发

JAVA对文件内数据进行排序的解决办法

2008-11-17 18:19 447 查看
今天在对文件内数据进行排序时,出了点问题,我的做法是这样的:

首先从键盘输入一行数数字,用BufferedReader的readline方法获得,然后用FileWriter写入到文件中。跟着用FileReader的read方法,将文件内的数据读入到自己定义的char数组中,最后再用数组的排序函数,但最终输出不对。以下是源代码:

import java.io.*;

import java.util.*;public class SortNum {public SortNum() {

// TODO Auto-generated constructor stub  

}/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub  

char ch[] = new char[10];

try {

   File file = new File("c:/save.dat");

   BufferedReader br = new BufferedReader(new InputStreamReader(

     System.in));

   FileReader fr = new FileReader(file);

   FileWriter fw = new FileWriter(file);

   String s = br.readLine();

   fw.write(s);

   fr.read(ch);

   Arrays.sort(ch);

   for (int i = 0; i < ch.length; i++) {

    System.out.print(ch[i] + " ");

   }

   fw.close();

   fr.close();

   br.close();

} catch (Exception e) {

   e.printStackTrace();

}

}}

//可以说输入是没问题的,主要是利用数组得到那一行输入数据时,估计是编码方面的问题,导致最终输出不正确。 

//另外说一下上面这种方面的局限性。由于是用char,所以对于输入的数据,最终排序只能按一位字符来排,所以这 

//种方法是不可行的。 

//介绍另一种方法: 

//String类中的split方法,可以用如下形式输入1,2,3,4, 然后用split(“,”)的方法,它会以字符串数组分 

//组。这样就解决了获取输入数据不用再转换成char字符型的情况了。 

//源代码如下: 

import java.io.*;

import java.util.*;

public class SortNum {

public SortNum() {

   // TODO Auto-generated constructor stub  

}

/**

* @param args

*/

public static void main(String[] args) {

   // TODO Auto-generated method stub  

   String st[];

   try {

    File file = new File("c:/save.dat");

    FileWriter fw = new FileWriter(file);

    FileReader fr = new FileReader(file);

    BufferedReader br = new BufferedReader(new InputStreamReader(

      System.in));

    String s = br.readLine();

    st = s.split(",");

    fw.write(s);

    Arrays.sort(st);

    for (int i = 0; i < st.length; i++) {

     System.out.print(st[i] + " ");

     fw.append(st[i] + " ");

    }

    br.close();

    fr.close();

    fw.close();

   } catch (Exception e) {

    e.printStackTrace();

   }

}

}

//不过这个其实也有点小问题,针对字符串数组的排序,Arrays.sort排序的思想应该是按先按字符内容,再按字符内 

//容大小来排的。大家可以试试,当输入10,100,50,5时,它的输出是5,10,100,50 

//其实要解决这个问题也比较简单,不要用Arrays.sort来排序,自己写个排序的算法,使用冒泡来排就可以了。有兴 

//趣的不妨试试。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java file string 算法 c
相关文章推荐