JAVA技巧辅导(JAVA对文件内数据进行排序)
来源:优易学  2011-11-19 9:49:20   【优易学:中国教育考试门户网】   资料下载   IT书店
  首先从键盘输入一行数数字,用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来排序,自己写个排序的算法,使用冒泡来排就可以了。有兴趣的不妨试试。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训