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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 danlyalex 于 2015-6-20 07:04 编辑

楼主是 基础班的,今天 第一次考试,然后晚上老师让我们提交答案,格式为(我们班的大神们别来和我对答案啊!!我已经检查出来三四道错误了..)
1-5:d,acd,b,c,bc
6-10:ab,d,b,c,bc
11-15:bd,d,d,c,b
16-20:b,ad,c,d,b
21-25:a,d,ad,c,b
26-30:ac,a,bc,c,d
31-35:b,ac,d,d,a
36-40:a,c,b,c,a
这种类型的..之前,就一直做,然后做完了,就把答案往里面填,....完了后我们提交答案,,显示总分只有35分.我只打了6.5分..完了完了.这数据太坑爹啊.

   一问,,我们美丽动人伶牙俐齿落落大方的班主任,,她解释说是要我们重新 改,,把小写 都改成大写的..此时同学们就抱怨要一个一个改.眼睛都花了..
我就捉摸着不是刚好自学到了IO流和String类么,,于是就写了一串代码.
    完了一运行,咔咔就给改成大写了.把我这新手给激动的

  1. /*

  2. * 将文本文档里的大写字母全部转换成小写

  3. *         思路:A,用高效字符输入流读取文本文档里的数据

  4. *              B,将他们存入ArrayList集合中来,然后将集合转成字符串数组,将每一句字符串改为小写的然后用stringbuilder拼接起来再转为字符串赋值到数组中来

  5. *              C,用高效字符输出流读取数组中的数据,然后输出到文本文档

  6. */

  7. import java.io.BufferedReader;

  8. import java.io.BufferedWriter;

  9. import java.io.File;

  10. import java.io.FileReader;

  11. import java.io.FileWriter;

  12. import java.io.IOException;

  13. import java.util.ArrayList;


  14. public class Test {

  15.         public static void main(String[] args) throws IOException {

  16.                 //封装源文件,将桌面上的考试题封装进来..你们如果要运行的话拿去把路径给改了.如果放在桌面上的话,只要把下面的XXX改成你自己名字就行

  17.                 File file = new File("C:\\Users\\Administrator\\Desktop\\XXX.txt");            
  18.       //将源文件用高效字符流读取,然后存储到旧arraylist集合中来.,因为ArrayList集合是有序的,可重复的.

  19.                 BufferedReader br = new BufferedReader(new FileReader(file));

  20.                 ArrayList<String> arr = new ArrayList<String>();

  21.                 String line = null;

  22.                 while ((line = br.readLine()) != null) {

  23.                         arr.add(line);

  24.                 }

  25.                 br.close();

  26.                 // 将集合变成字符串数组然后变成小写后再调回来使用

  27.                 ArrayList<String> arr2 = changeArr(arr);            
  28.     //将接收回来的新集合写入之前的文件当中.

  29.                 BufferedWriter bw = new BufferedWriter(new FileWriter(file));

  30.                 for (String line2 : arr2) {

  31.                         bw.write(line2);

  32.                         bw.newLine();

  33.                         bw.flush();

  34.                 }

  35.                 bw.close();

  36.         }

  37.          //这是一个将旧集合作为形式参数接收,返回一个新集合的方法.方法里将集合中的字符串转为大写.

  38.         public static ArrayList<String> changeArr(ArrayList<String> arr) {               
  39.         //创建新的集合.arr2

  40.                 ArrayList<String> arr2 = new ArrayList<String>();

  41.                 StringBuilder sb=new StringBuilder();               
  42.     //定义一个字符数组str.长度为 旧集合arr的长度,即为 arr.size().

  43.                 String[] str = new String[arr.size()];              
  44.     //遍历旧集合,将里面的元素依次赋值给字符数组str

  45.                 for (int i = 0; i < arr.size(); i++) {

  46.                         str[i] = arr.get(i);                       
  47.       //将接收到的字符串转为大写,然后用StringBuilder对象来接收拼接.

  48.                         sb.append(str[i].toUpperCase()).append("\r\n");

  49.                 }              
  50.     //最后把拼接好的sb转为字符串再存入到新的集合arr2中来.

  51.                 arr2.add(sb.toString());

  52.                 //返回新集合arr2.

  53.                 return arr2;

  54.         }

  55. }

复制代码

...

我之前知识点不是很牢固.所以做的时候还是有点晕
现在把这代码中的思路写一下.
首先,我先用高效字符输入流读取文本文档,然后把里面的数据存入到旧集合中来.
这里用到的就是BufferedReader 啊 ArrayList啊之类的.很基础的东西
其次, 再自定义方法,将旧集合作为形参给到这个方法里,返回一个新的集合.方法里的代码就是
将集合中的数据依次赋值给字符数组..然后创建一个新的集合,接收字符数调用toUpperCase()后就是大写后,存入StringBuilder 里再toString()后的内容..
最后,调用该方法,将变大写后的数据输出到文本文件中来.
..我写的有点乱..就是刚好遇到这么个情况,就写了这么一段小代码,,和大家交流下新手 心得..顺便复习一下一些重要的方法.
A: IO流的读写: 如果是文本文件就考虑高效字符流,如果是非文本就考虑高效字节流,,如果要获取一个文件夹中的所有文件(包括子文件夹),那么还得用到递归.
B: 集合转字符串数组的方法:  可以用ArrayList集合遍历的方式,把每个元素依次赋值给字符串数组.
C:字符串变大写,小写的方法: toUpperCase(),toLowerCase().如果要改大小写只要把代码中的这一块改变就行.
D:用StringBuilder里的append()接收字符串,然后用toString()方法再转成字符串的方法.
    这个十分重要.因为我没用StringBuilder接收直接toString(),打印出来的就是地址值..
综上..就是觉得好玩..然后运行了下.没出错了.
       代码写的比较复杂,,望小伙伴们多多指点下!
  1. package stringApi;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.util.ArrayList;

  9. /**
  10. * 需求,把所有小写的答案改成大写
  11. * @author danlyalex
  12. *
  13. */
  14. public class ChangeDaXiaoXie {

  15.         public static void main(String[] args) throws IOException {
  16.                 //封装数据源
  17.                 File srcFile=new File("C:\\Users\\Administrator\\Desktop\\xpy.txt");
  18.                 //高效字符流读取源文件的内容
  19.                 BufferedReader br=new BufferedReader(new FileReader(srcFile));
  20.                 //定义一个集合.将源文件内容存入集合
  21.                 ArrayList<String> arr=new ArrayList<String>();
  22.                 String line=null;
  23.                 while((line=br.readLine())!=null){
  24.                         //添加元素时,直接改为大写
  25.                         arr.add(line.toUpperCase());
  26.                 }
  27.                 br.close();
  28.                 //高效字符流写入集合的内容到之前的文件中来.
  29.                 BufferedWriter bw=new BufferedWriter(new FileWriter(srcFile));
  30.                 for (String line2 : arr) {
  31.                         bw.write(line2);
  32.                         bw.newLine();
  33.                         bw.flush();
  34.                 }
  35.                 bw.close();
  36.         }

  37. }
复制代码

!
6.20日更新编辑.
昨天我们上课学到了String类的API..之前由于自学知识掌握不牢固!所以用了这么麻烦的方法...现在改进一个最简单的..
思路:由于文本文档里的东西,除了数字就是字母..所以直接可以在line上改为大小写..多谢楼下的大神指点....


35 个回复

倒序浏览
谦虚的谢大神,诚意之帖,赞赞赞!!!

评分

参与人数 1黑马币 +10 收起 理由
danlyalex + 10 淡定

查看全部评分

回复 使用道具 举报 1 0
谢大神不要谦虚~你要顶起大梁~带起我们的节奏啊。前面不能老被压制啊~
回复 使用道具 举报
wyw 发表于 2015-6-10 23:44
谢大神不要谦虚~你要顶起大梁~带起我们的节奏啊。前面不能老被压制啊~

万年吊车尾就是在下.  duo zuo you re shi ku.wu guo za yi ma si
回复 使用道具 举报
wyw 发表于 2015-6-10 23:44
谢大神不要谦虚~你要顶起大梁~带起我们的节奏啊。前面不能老被压制啊~

万年吊车尾就是在下.  duo zuo you re shi ku.wu guo za yi ma si
回复 使用道具 举报
我来个谢大神点个赞!顶礼膜拜!
回复 使用道具 举报
学以致用啊
回复 使用道具 举报
这速度够快的
回复 使用道具 举报
渣表示看不懂,但有种不明觉厉个赶脚
回复 使用道具 举报
大神学以致用好屌 ,我等学渣情何以堪!
回复 使用道具 举报
qian0217wei 发表于 2015-6-11 00:37
我来个谢大神点个赞!顶礼膜拜!

求黑马币!!
回复 使用道具 举报
这个必须点赞 不错
回复 使用道具 举报
大神考试都考出bug了
回复 使用道具 举报
DAN66 中级黑马 2015-6-17 23:05:20
14#
太棒了,得向楼主学习才行
回复 使用道具 举报
SHISY 中级黑马 2015-6-17 23:08:47
15#
大神啊,赞一个:)
回复 使用道具 举报
刚开始学IO,看不懂
回复 使用道具 举报
我就要学到这了,先看一下做个准备
回复 使用道具 举报
好像麻烦了,记得还有种简单的做法
回复 使用道具 举报
好复杂的感觉,可以直接把line给转成大写再写出去吗

点评

学到了.谢谢!  发表于 2015-6-20 07:06

评分

参与人数 1黑马币 +4 收起 理由
danlyalex + 4 很给力!

查看全部评分

回复 使用道具 举报
同是基础班为何你这么强大..
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马