室友是世界记忆大师,然后找了圆周率后10000位,特别乱,让我给他处理成3个数字一组。。结果想了下还特别简单,然后就被世界记忆大师给夸了................
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.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
/**
* <p>
* Title:ChangeNumber
* </p>
* <p>
* Description:10W个数字,5个一组的切割为3个一组,运行时间3秒。
* </p>
* <p>
* Location:Frostburg
* </p>
*
* @author: Eric.Chen
* @date:2017年9月19日上午10:57:26
*/
public class ChangeNumber {
public static void main(String[] args) throws IOException {
// FileReader 读取文本文件
ChangeNumber re = new ChangeNumber();
FileReader fr = new FileReader("F:\\number.txt");
String str = "";
for (int i = 0; i < 10000; i++) {// 循环次数按数字个数定
char len1 = (char)fr.read();//
str += len1;
}
fr.close();
String t1 = str;
String finalNumber = re.cutNumber(t1);// 调用切割函数,返回切割后的数字
// System.out.println(finalNumber);
// 将结果写到另一个文本文件中
FileWriter fw = new FileWriter("F:\\new.txt");
char[] charArray = finalNumber.toCharArray();// 将切割好的字符串转为字符数组
for (int i = 0; i < charArray.length; i++) {
fw.write(charArray[i]);// 每次写入一个到指定文本
fw.flush();// 刷新流
}
fw.close();// 关闭流
}
public String cutNumber(String str)// 切割字符串,一次切3个
{
String str1 = str.replaceAll(" ", "");// 调用方法将字符串中所有的空格都替换
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str1.length() - 3; i += 3) {
String sub = str1.substring(i, i + 3);// 切割
sb.append(sub);// 连接
sb.append(" ");// 加空格隔开
}
String str3 = sb.toString();// 转化成完整的字符串
return str3;
}
}