本帖最后由 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类么,,于是就写了一串代码.
完了一运行,咔咔就给改成大写了.把我这新手给激动的
- /*
-
- * 将文本文档里的大写字母全部转换成小写
-
- * 思路:A,用高效字符输入流读取文本文档里的数据
-
- * B,将他们存入ArrayList集合中来,然后将集合转成字符串数组,将每一句字符串改为小写的然后用stringbuilder拼接起来再转为字符串赋值到数组中来
-
- * C,用高效字符输出流读取数组中的数据,然后输出到文本文档
-
- */
-
- import java.io.BufferedReader;
-
- import java.io.BufferedWriter;
-
- import java.io.File;
-
- import java.io.FileReader;
-
- import java.io.FileWriter;
-
- import java.io.IOException;
-
- import java.util.ArrayList;
-
- public class Test {
-
- public static void main(String[] args) throws IOException {
-
- //封装源文件,将桌面上的考试题封装进来..你们如果要运行的话拿去把路径给改了.如果放在桌面上的话,只要把下面的XXX改成你自己名字就行
-
- File file = new File("C:\\Users\\Administrator\\Desktop\\XXX.txt");
- //将源文件用高效字符流读取,然后存储到旧arraylist集合中来.,因为ArrayList集合是有序的,可重复的.
-
- BufferedReader br = new BufferedReader(new FileReader(file));
-
- ArrayList<String> arr = new ArrayList<String>();
-
- String line = null;
-
- while ((line = br.readLine()) != null) {
-
- arr.add(line);
-
- }
-
- br.close();
-
- // 将集合变成字符串数组然后变成小写后再调回来使用
-
- ArrayList<String> arr2 = changeArr(arr);
- //将接收回来的新集合写入之前的文件当中.
-
- BufferedWriter bw = new BufferedWriter(new FileWriter(file));
-
- for (String line2 : arr2) {
-
- bw.write(line2);
-
- bw.newLine();
-
- bw.flush();
-
- }
-
- bw.close();
-
- }
-
- //这是一个将旧集合作为形式参数接收,返回一个新集合的方法.方法里将集合中的字符串转为大写.
-
- public static ArrayList<String> changeArr(ArrayList<String> arr) {
- //创建新的集合.arr2
-
- ArrayList<String> arr2 = new ArrayList<String>();
-
- StringBuilder sb=new StringBuilder();
- //定义一个字符数组str.长度为 旧集合arr的长度,即为 arr.size().
-
- String[] str = new String[arr.size()];
- //遍历旧集合,将里面的元素依次赋值给字符数组str
-
- for (int i = 0; i < arr.size(); i++) {
-
- str[i] = arr.get(i);
- //将接收到的字符串转为大写,然后用StringBuilder对象来接收拼接.
-
- sb.append(str[i].toUpperCase()).append("\r\n");
-
- }
- //最后把拼接好的sb转为字符串再存入到新的集合arr2中来.
-
- arr2.add(sb.toString());
-
- //返回新集合arr2.
-
- return arr2;
-
- }
-
- }
复制代码
...
我之前知识点不是很牢固.所以做的时候还是有点晕
现在把这代码中的思路写一下.
首先,我先用高效字符输入流读取文本文档,然后把里面的数据存入到旧集合中来.
这里用到的就是BufferedReader 啊 ArrayList啊之类的.很基础的东西
其次, 再自定义方法,将旧集合作为形参给到这个方法里,返回一个新的集合.方法里的代码就是
将集合中的数据依次赋值给字符数组..然后创建一个新的集合,接收字符数调用toUpperCase()后就是大写后,存入StringBuilder 里再toString()后的内容..
最后,调用该方法,将变大写后的数据输出到文本文件中来.
..我写的有点乱..就是刚好遇到这么个情况,就写了这么一段小代码,,和大家交流下新手 心得..顺便复习一下一些重要的方法.
A: IO流的读写: 如果是文本文件就考虑高效字符流,如果是非文本就考虑高效字节流,,如果要获取一个文件夹中的所有文件(包括子文件夹),那么还得用到递归.
B: 集合转字符串数组的方法: 可以用ArrayList集合遍历的方式,把每个元素依次赋值给字符串数组.
C:字符串变大写,小写的方法: toUpperCase(),toLowerCase().如果要改大小写只要把代码中的这一块改变就行.
D:用StringBuilder里的append()接收字符串,然后用toString()方法再转成字符串的方法.
这个十分重要.因为我没用StringBuilder接收直接toString(),打印出来的就是地址值..
综上..就是觉得好玩..然后运行了下.没出错了.
代码写的比较复杂,,望小伙伴们多多指点下!
- package stringApi;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- /**
- * 需求,把所有小写的答案改成大写
- * @author danlyalex
- *
- */
- public class ChangeDaXiaoXie {
- public static void main(String[] args) throws IOException {
- //封装数据源
- File srcFile=new File("C:\\Users\\Administrator\\Desktop\\xpy.txt");
- //高效字符流读取源文件的内容
- BufferedReader br=new BufferedReader(new FileReader(srcFile));
- //定义一个集合.将源文件内容存入集合
- ArrayList<String> arr=new ArrayList<String>();
- String line=null;
- while((line=br.readLine())!=null){
- //添加元素时,直接改为大写
- arr.add(line.toUpperCase());
- }
- br.close();
- //高效字符流写入集合的内容到之前的文件中来.
- BufferedWriter bw=new BufferedWriter(new FileWriter(srcFile));
- for (String line2 : arr) {
- bw.write(line2);
- bw.newLine();
- bw.flush();
- }
- bw.close();
- }
- }
复制代码
!
6.20日更新编辑.
昨天我们上课学到了String类的API..之前由于自学知识掌握不牢固!所以用了这么麻烦的方法...现在改进一个最简单的..
思路:由于文本文档里的东西,除了数字就是字母..所以直接可以在line上改为大小写..多谢楼下的大神指点....
|
|