Java BufferedReader+FileReader+BufferedWriter+FileWriter 的简单应用

应用场景
某小区某单元业主针对是否更换老旧电梯进行投票表决,该单元共17层,每层6户,每户编号依次为 A,B,C,D,E,F。

在微信中通过接龙的方式投票,现将微信中的投票结果复现到文本文件 YY.txt 中,并做简单处理后备用。

为了统计投票情况,写了个简单的Java代码,可对输入文件 YY.txt 进行处理,结果输出到文件 OUT.txt 中

代码如下 YY.java
输入:YY.txt
输出:OUT.txt

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;

public class YY {
    
    
	public static void main(String[] args) {
    
    
		int[][] LIFT = new int[17][6];
		for(int i = 0; i < LIFT.length; i++) {
    
    
			for(int j = 0; j < LIFT[i].length; j++) {
    
    
				LIFT[i][j] = 0;
			}
		}
		
		try {
    
    
			BufferedReader reader;
			reader = new BufferedReader(new FileReader("YY.txt"));
			
			BufferedWriter writer;
			writer = new BufferedWriter(new FileWriter("OUT.txt"));
			
			String line = reader.readLine();
			while (line != null) {
    
    
				System.out.println(line);
				if (line != null && !line.equals("")) {
    
    
					String[] arr = line.split(" ");
				//	for (int i = 0; i < arr.length; i++) {
    
    
				//		System.out.println(arr[i]);
				//	}
					for(int k = 0; k < 17; k++) {
    
    
						int floor = Integer.parseInt(arr[0].substring(0, arr[0].length() - 1));
						floor -= 1;
					//	if (arr[0].startsWith(String.valueOf(k))) {
    
    
						if (floor == k) {
    
    
						//	System.out.println("----->" + arr[0]);
						//	System.out.println("----->" + floor);
							
						//	String X = arr[0].substring(arr[0].length()-1);
							char X = arr[0].toUpperCase().charAt(arr[0].length() -1);
							if( X >= 'A' && X <= 'F') {
    
    
								System.out.println("----->" + floor + ", " + X + ", " + (X - 'A'));
								LIFT[floor][X - 'A'] = 1;
							}
						}
					}
				}
				// read next line
				line = reader.readLine();
			}
			reader.close();
			
			writer.write("    A, B, C, D, E, F");
			writer.newLine();
			int cnt = 1;
			for (int[] lift : LIFT){
    
    
				String s = String.format("%2d ", cnt) + Arrays.toString(lift);
				System.out.println(s);
				writer.write(s);
				writer.newLine();
				cnt++;
			}
			writer.flush();
			writer.close();
		} catch (IOException e) {
    
    
			e.printStackTrace();
		}
	}
}

通过命令行编译和运行Java的方式就不赘述了,我是在Win10上的Ubuntu子系统运行的。

k112358@PC:/mnt/d/code/JAVA$ javac.exe YY.java
k112358@PC:/mnt/d/code/JAVA$ java.exe YY

源码YY.java和输入文件YY.txt

这里附上一个其他人写的文章链接:
https://blog.csdn.net/weixin_42717928/article/details/94463686

输入说明
如下 YY.txt 文件第一行 15D A,表示15楼D户投票选择 A 品牌电梯
代码处理时不关注电梯品牌,只统计哪一户投票了,因为投票户数要达到60%以上才有效。
也就是说代码只处理每一行文本的第一段字符串(如第一行只关注15D),需要将楼层和户型解析出来。

15D A
9F  R
6B  A
4A  R
2E  TKE
9a  R
3E  R
4b  R
11D R
10A R
5F  R
12B R
9B  R
14F R1
7B  R
3A  R
8b  R
13F R
16  R
6D  R
6A  A
17c R
11B R
7D  R
7F  R
4e  A
7C  A
13F A
3f  R
7E  A
10D R
17E R
15C R
7A  R
14B R
14E R
14D R
5E  R
8A  R
9D  R
10E R
10C R
14c R
4D  R
8D  R
8E  R
9c  R
8F  R
2B  R
7E  R
16F R
13A R
17D R
14A R
5A  R
9E  R
2D  R
17B R
17A R
3B  R
5B  R
16E R
9E  R

输出说明
代码运行完成后会将结果写入到 OUT.txt 文件中
OUT.txt文件内容如下所示,1表示已投票,0表示未投票
用 Notepad++打开,双击选中0,所有0都会高亮,即可直观看到哪一层哪一户未投票
方便物业管家上门一个一个询问

    A, B, C, D, E, F
 1 [0, 0, 0, 0, 0, 0]
 2 [0, 1, 0, 1, 1, 0]
 3 [1, 1, 0, 0, 1, 1]
 4 [1, 1, 0, 1, 1, 0]
 5 [1, 1, 0, 0, 1, 1]
 6 [1, 1, 0, 1, 0, 0]
 7 [1, 1, 1, 1, 1, 1]
 8 [1, 1, 0, 1, 1, 1]
 9 [1, 1, 1, 1, 1, 1]
10 [1, 0, 1, 1, 1, 0]
11 [0, 1, 0, 1, 0, 0]
12 [0, 1, 0, 0, 0, 0]
13 [1, 0, 0, 0, 0, 1]
14 [1, 1, 1, 1, 1, 1]
15 [0, 0, 1, 1, 0, 0]
16 [0, 0, 0, 0, 1, 1]
17 [1, 1, 1, 1, 1, 0]

YY.java 是一个典型的 BufferedReader FileReader BufferedWriter FileWriter 应用,其中有二维数组,并涉及字符串处理。
写在这里也算是给自己做个笔记。

最后贴一下代码运行时输出的打印

k112358@PC:/mnt/d/code/JAVA$ ls
YY.java  YY.txt
k112358@PC:/mnt/d/code/JAVA$ javac.exe YY.java
k112358@PC:/mnt/d/code/JAVA$ ls
YY.class  YY.java  YY.txt
k112358@PC:/mnt/d/code/JAVA$ java.exe YY
15D A
----->14, D, 3
9F  R
----->8, F, 5
6B  A
----->5, B, 1
4A  R
----->3, A, 0
2E  TKE
----->1, E, 4
9a  R
----->8, A, 0
3E  R
----->2, E, 4
4b  R
----->3, B, 1
11D R
----->10, D, 3
10A R
----->9, A, 0
5F  R
----->4, F, 5
12B R
----->11, B, 1
9B  R
----->8, B, 1
14F R1
----->13, F, 5
7B  R
----->6, B, 1
3A  R
----->2, A, 0
8b  R
----->7, B, 1
13F R
----->12, F, 5
16  R
6D  R
----->5, D, 3
6A  A
----->5, A, 0
17c R
----->16, C, 2
11B R
----->10, B, 1
7D  R
----->6, D, 3
7F  R
----->6, F, 5
4e  A
----->3, E, 4
7C  A
----->6, C, 2
13F A
----->12, F, 5
3f  R
----->2, F, 5
7E  A
----->6, E, 4
10D R
----->9, D, 3
17E R
----->16, E, 4
15C R
----->14, C, 2
7A  R
----->6, A, 0
14B R
----->13, B, 1
14E R
----->13, E, 4
14D R
----->13, D, 3
5E  R
----->4, E, 4
8A  R
----->7, A, 0
9D  R
----->8, D, 3
10E R
----->9, E, 4
10C R
----->9, C, 2
14c R
----->13, C, 2
4D  R
----->3, D, 3
8D  R
----->7, D, 3
8E  R
----->7, E, 4
9c  R
----->8, C, 2
8F  R
----->7, F, 5
2B  R
----->1, B, 1
7E  R
----->6, E, 4
16F R
----->15, F, 5
13A R
----->12, A, 0
17D R
----->16, D, 3
14A R
----->13, A, 0
5A  R
----->4, A, 0
9E  R
----->8, E, 4
2D  R
----->1, D, 3
17B R
----->16, B, 1
17A R
----->16, A, 0
3B  R
----->2, B, 1
5B  R
----->4, B, 1
16E R
----->15, E, 4
9E  R
----->8, E, 4
 1 [0, 0, 0, 0, 0, 0]
 2 [0, 1, 0, 1, 1, 0]
 3 [1, 1, 0, 0, 1, 1]
 4 [1, 1, 0, 1, 1, 0]
 5 [1, 1, 0, 0, 1, 1]
 6 [1, 1, 0, 1, 0, 0]
 7 [1, 1, 1, 1, 1, 1]
 8 [1, 1, 0, 1, 1, 1]
 9 [1, 1, 1, 1, 1, 1]
10 [1, 0, 1, 1, 1, 0]
11 [0, 1, 0, 1, 0, 0]
12 [0, 1, 0, 0, 0, 0]
13 [1, 0, 0, 0, 0, 1]
14 [1, 1, 1, 1, 1, 1]
15 [0, 0, 1, 1, 0, 0]
16 [0, 0, 0, 0, 1, 1]
17 [1, 1, 1, 1, 1, 0]

----你翻到最后了----

猜你喜欢

转载自blog.csdn.net/k112358/article/details/125445981
今日推荐