应用场景
某小区某单元业主针对是否更换老旧电梯进行投票表决,该单元共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]
----你翻到最后了----



