首先从键盘输入一行数数字,用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来排序,自己写个排序的算法,使用冒泡来排就可以了。有兴趣的不妨试试。
责任编辑:小草