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来排序,自己写个排序的算法,使用冒泡来排就可以了。有兴
//趣的不妨试试。
首先从键盘输入一行数数字,用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 读取excel 文件里的时间格式数据时,24时制会自动转化为12时制,解决办法
- 用 java 读取excel 文件里的时间格式数据时,24时制会自动转化为12时制,解决办法 .
- java_读取文件并对数据进行排序并写出
- Mysql 使用ibd数据文件进行数据恢复 (以及数据移动) 1067的解决办法
- Java1.7通过collections类的sort方法对ArrayList进行排序无效的解决办法。
- Jquery form.js文件上传返回JSON数据,在IE下提示下载文件的解决办法,并对返回数据进行正确的解析
- 用 java 读取excel 文件里的时间格式数据时,24时制会自动转化为12时制,解决办法
- MacOSX配置java_home找不到.bash_profile 文件的解决办法
- java一次性查询几十万,几百万数据解决办法
- eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
- java 大数据处理之内存溢出解决办法
- 运行wordcount 导入FileUtil.java文件出现错误解决办法
- android 典型问题:R.java文件不能自动生成的解决办法
- 在编辑Android工程时出现R.java文件丢失错误的解决办法
- 解决Java读取properties文件的中文问题的新办法(不使用native2ascii.exe及其他工具)
- java实现读取文件夹下的文件并进行排序
- window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法
- java读取数据当中有“口”型特殊符号时解决办法(写数据时候)
- IntelliJ IDEA 2016.3.4 Maven项目为什么不能右键新建Java文件的解决办法
- android 典型问题:R.java文件不能自动生成的解决办法