A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

试试,应该行
回复 使用道具 举报
Doug 中级黑马 2015-4-11 10:26:46
442#
复习下多线程
回复 使用道具 举报
Doug 中级黑马 2015-4-11 12:38:21
443#
求技术分~
另外,可以简单评价下我的答案吗?

JavaSE之IO流操作2.zip

45.64 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Doug 发表于 2015-4-11 12:38
求技术分~
另外,可以简单评价下我的答案吗?

挺好的,算法不错,正则用的也不错。赞一个,可以作为答案参考:
  1. /*题目:已知:本地D盘根目录下有2个文本文件a.txt,c.txt文本格式及内容如下图:

  2. 求:
  3.         ①将a.txt文件中的所有奇数行(也就是第1、3行)字母跟数字互换
  4.                 (比如第一行,处理后为:1a 2a 3a 4a),
  5.                 偶数行顺序倒序排列(比如第二行,处理后为:b4 b3 b2 b1),
  6.                 然后将结果保存在b.txt中。
  7.         ②将c.txt中的数字进行如下运算,
  8.                 第n行m列是第(n-1)行第m列的数字之和
  9.                 (提示:第一行不变,第二行变为:6 8 10 12,第三行变为:15 18 21 24,第四行变为28 32 36 40),
  10.                 然后将计算结保存在d.txt中。
  11.                 */

  12. package com.itheima.test02;

  13. import java.io.BufferedReader;
  14. import java.io.FileReader;
  15. import java.io.IOException;
  16. import java.io.PrintWriter;
  17. import java.util.ArrayList;
  18. import java.util.List;

  19. public class Test {
  20.         public static void main(String[] args) throws IOException {
  21.                 // ①将a.txt文件中的所有奇数行(也就是第1、3行)字母跟数字互换,
  22.                 // 偶数行顺序倒序排列(比如第二行,处理后为:b4 b3 b2 b1),然后将结果保存在b.txt中。
  23.                 BufferedReader br = new BufferedReader(new FileReader("d:/a.txt"));
  24.                 PrintWriter pw = new PrintWriter("d:/b.txt");
  25.                 String line = null;
  26.                 boolean flag = false;
  27.                 while ((line = br.readLine()) != null) {
  28.                         flag = !flag;
  29.                         if (flag) {
  30.                                 line = processString_1(line);
  31.                         } else {
  32.                                 line = processString_3(line);
  33.                         }
  34.                         pw.println(line);
  35.                         pw.flush();
  36.                 }
  37.                 br.close();

  38.                 // ②将c.txt中的数字进行如下运算:n行m列的值为c.txt中(1~n-1)行m列的值之和。
  39.                 /*
  40.                  * 思路:每行都分割成数组,并添加到List中。List的长度就是行数。
  41.                  * 新的List的当前行当前列等于旧的List的当前行当前列和新的List的上一行当前列之和。
  42.                  */
  43.                 BufferedReader br2 = new BufferedReader(new FileReader("d:/c.txt"));
  44.                 PrintWriter pw2 = new PrintWriter("d:/d.txt");
  45.                 String line2 = null;
  46.                 List<String[]> srcList = new ArrayList<String[]>();
  47.                 List<String[]> desList = new ArrayList<String[]>();
  48.                 while ((line = br2.readLine()) != null) {
  49.                         String[] arr = line.split(" +");
  50.                         srcList.add(arr);
  51.                         // 写入d.txt
  52.                         if (srcList.size() == 1) {
  53.                                 desList.add(arr);
  54.                                 // pw2.print(line2);
  55.                                 // pw2.flush();
  56.                         } else {
  57.                                 func(srcList, desList);
  58.                         }
  59.                         // 将desList当前行写成字符串并输出。
  60.                         String out = arrayToString(desList.get(desList.size() - 1));
  61.                         pw2.println(out);
  62.                         pw2.flush();
  63.                 }
  64.                 br2.close();
  65.                 pw2.close();
  66.         }

  67.         public static String arrayToString(String[] array) {
  68.                 StringBuilder sb = new StringBuilder();
  69.                 for (String str : array) {
  70.                         sb.append(str + " ");
  71.                 }
  72.                 return new String(sb);
  73.         }

  74.         /**
  75.          * 新的List的当前行当前列等于旧的List的当前行当前列和新的List的上一行当前列之和。
  76.          *
  77.          * @param srcList
  78.          *            源List。
  79.          * @param desList
  80.          *            新List。
  81.          */
  82.         public static void func(List<String[]> srcList, List<String[]> desList) {
  83.                 int len = srcList.size();
  84.                 String[] srcArr = srcList.get(len - 1);// 旧的List的当前行
  85.                 String[] desArr = desList.get(len - 2);// 新的List的上一行
  86.                 String[] newArr = new String[srcArr.length];
  87.                 for (int index = 0; index < srcArr.length; index++) {
  88.                         int value = Integer.valueOf(srcArr[index]) + Integer.valueOf(desArr[index]);
  89.                         newArr[index] = "" + value;
  90.                 }
  91.                 desList.add(newArr);
  92.         }

  93.         /**
  94.          * 将原字符串中的相邻的字母和数字(字母在前数字在后)位置互换。
  95.          *
  96.          * @param str
  97.          *            给定的字符串。
  98.          * @return 返回修改后的字符串。
  99.          */
  100.         public static String processString_1(String str) {
  101.                 String regex = "(\\w)(\\d)";
  102.                 return str.replaceAll(regex, "$2$1");
  103.         }

  104.         /**
  105.          * 将原字符串中的相邻的数字和字母(数字在前字母在后)位置互换。
  106.          *
  107.          * @param str
  108.          *            给定的字符串。
  109.          * @return 返回修改后的字符串。
  110.          */
  111.         public static String processString_2(String str) {
  112.                 String regex = "(\\d)(\\w)";
  113.                 return str.replaceAll(regex, "$2$1");
  114.         }

  115.         /**
  116.          * 将源字符串逆序,但源字符串中相邻的字母和数字相对位置不改变。
  117.          *
  118.          * @param str
  119.          *            给定的字符串。
  120.          * @return 返回修改后的字符串。
  121.          */
  122.         public static String processString_3(String str) {
  123.                 return processString_2(reverseString(str).trim());
  124.         }

  125.         /**
  126.          * 将源字符串逆序。
  127.          *
  128.          * @param str
  129.          *            给定的字符串。
  130.          * @return 返回修改后的字符串。
  131.          */
  132.         public static String reverseString(String str) {
  133.                 StringBuilder sb = new StringBuilder();
  134.                 for (int index = 0; index < str.length(); index++) {
  135.                         sb.append(str.charAt(str.length() - 1 - index));
  136.                 }
  137.                 return new String(sb);
  138.         }
  139. }
复制代码
回复 使用道具 举报
Doug 中级黑马 2015-4-11 14:43:13
445#
王震阳老师 发表于 2015-4-11 13:32
挺好的,算法不错,正则用的也不错。赞一个,可以作为答案参考:

谢谢王sir~
回复 使用道具 举报
本帖最后由 青蜂侠 于 2015-4-21 13:08 编辑

练手了
回复 使用道具 举报
拿题试试看
回复 使用道具 举报
回帖领题
回复 使用道具 举报
回帖领题
回复 使用道具 举报
答题拿分。。

IoopDemo.rar

51.17 KB, 阅读权限: 100, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
:handshake
回复 使用道具 举报
阳哥来看看:handshake

1.运行结果.png (14.43 KB, 下载次数: 34)

1、运行结果

1、运行结果

2.运行结果.png (14.8 KB, 下载次数: 30)

2、运行结果

2、运行结果

IoTest.rar

838 Bytes, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
看题看题
回复 使用道具 举报
提交答案,txt文档是UTF-8;

30期-UTF-8编码.zip

2 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
把文件放在根目录下了,读取的位置也是根目录的。没看到d盘。。。。
回复 使用道具 举报
来那题。。。。。。。
回复 使用道具 举报
暗月麟血 发表于 2015-4-22 16:51
来那题。。。。。。。



test30.zip (2.4 KB, 下载次数: 0)



回复 使用道具 举报
领题~·~
回复 使用道具 举报
答题答题

30.png (113.85 KB, 下载次数: 27)

30.png

Test30.zip

1004 Bytes, 阅读权限: 150, 下载次数: 0

回复 使用道具 举报
回帖领题~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马