应用场景
某小区某单元业主针对是否更换老旧电梯进行投票表决,该单元共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
这里附上一个其他人写的文章链接:
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]
----你翻到最后了----