黑马程序员技术交流社区
标题:
题目分享交流一下,
[打印本页]
作者:
吴海松
时间:
2014-12-25 20:56
标题:
题目分享交流一下,
d盘有个文件c.txt内容如下:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
要求:将c.txt中的数字进行如下运算,第n行m列是第(n-1)行第m列的数字之和(提示:第一行不变,第二行变为:6 8 10 12,第三行变为:15 18 21 24,第四行变为28 32 36 40),然后将计算结保存在d.txt中。
有好的建议和意见欢迎提出交流,最好可以帮我改进一下代码
package heima;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test1 {
static Pattern p = null;
static Matcher mathcer = null;
static String regex = "\\b[0-9]++\\b";
static ArrayList<ArrayList> arr = new ArrayList<ArrayList>();// 每行的号码都用一个集合存起来,这个集合用来存下面的集合存号码的集合
public static void main(String[] args) throws IOException {
show("D:\\d.txt");
}
public static void show(String FileDir) throws IOException {
File f = new File(FileDir);
BufferedReader r = new BufferedReader(new FileReader(f));
String str = null;
int line = 1;// 行计数器,用来记录读到了第几行
int com = 0;// 用于重复记数,0只是用来初始化而已
while ((str = r.readLine()) != null) {
p = Pattern.compile(regex);// 这两行是正则匹配
mathcer = p.matcher(str);
ArrayList arr1 = new ArrayList<Integer>(); // 用于存储每行的号码,由于在循环内,所以每次执行到这里都会创建一个新的集合,
if (line == 1) {// 这个是获取第一行的数据,第二行开始就不需要执行这个if内的语句了,因为第二行开始只受第一行的最后一个号码影响结果而已
while (mathcer.find()) {
Integer x = Integer.parseInt(mathcer.group());
arr1.add(x);
com = x;// 号码增加集合之后,我要记录下来这个号码,用来运算的,下一行开始到最后执行的都是else语句了
}
} else {
while (mathcer.find()) {// 从第二行开始都会执行到这里,直到最后
// ;mathcer.find()是匹配器的方法
com = com + line;// 第二行之后,其实读到的数字是什么并不重要,后一个数是前一个数加上行数line即可
arr1.add(com);
}
}
arr.add(arr1);// 将装行号码的集合增加到在成员变量定义的那个集合去
line++;// 是行计数器累加
}
PrintWriter out = new PrintWriter(new FileWriter(new File("d:\\c.txt")),true);
for (ArrayList ar : arr) {
for (int i = 0; i < ar.size(); i++) {
out.write(ar.get(i).toString()+" ");
out.flush();
}
out.println("");
}
for (ArrayList ar : arr) { for (int i = 0; i < ar.size(); i++) {
System.out.print((int) ar.get(i) + " ");
} System.out.println(" "); }
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2