博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白打比赛-随记(一)
阅读量:7087 次
发布时间:2019-06-28

本文共 6125 字,大约阅读时间需要 20 分钟。

随着华为2019年软挑的开启,我正式开启了菜鸟打比赛模式。

2019年华为的赛题个人感觉出的特别好,好到我一点头绪赌没有。不过这个赛题特别符合现在智能驾驶这个主题。不过华为这个确实站的角度相对高点,以前看到的大部分相关信息主要是讨论智能驾驶车辆采用图像传感等模式去规避其它物体,而华为软挑确实去调度整个城市的汽车。可想而知,这和阿里近些年推行的智慧城市遥相辉映。我想未来的智慧城市可能不仅仅是体现在衣、食,也应该体现在人们的住(智能家居)、行(智能驾驶)方面。

说实话,我第一次看见这个赛题介绍的开头时,居然觉得不是很难。不就是先读取三个TXT文件,然后把TXT写入到数组(数组链表、或者MAP)中,然后在创建根据roadList(路数组链表)创建图,最后把carList(车数组链表)中的节点car利用最短路径算法去搜索图不久可以了吗,看来大奖非我莫属——手动滑稽,勿喷。

直到我继续看到下面的介绍时,才发我真符合那就经典名句——“Too young too simple to naive”。如果不是实验室成员执意要参赛,我都要放弃了。尽管到现在也没有什么好的想法,不过也算是巩固了下自己所学习的知识。

好吧,废话不说了,直接先上代码(嘿嘿-其实只是读取文件的代码)。

 

1 package huawei;  2   3 import java.io.BufferedReader;  4   5 import java.io.FileReader;  6 import java.io.IOException;  7   8 import java.util.ArrayList;  9 import java.util.List; 10  11 import java.util.regex.Matcher; 12 import java.util.regex.Pattern; 13  14  15 /** 16  * 逐行读取txt文件并写入到list实体类中 17  *  18  * @author Bob 19  * 20  */ 21 public class car_input{ 22      23  24     public static List
read_Car() throws IOException { 25 26 String pathname = "C:\\Users\\11940\\Desktop\\1-map-training-2\\car.txt"; 27 FileReader reader = new FileReader(pathname); 28 BufferedReader br = new BufferedReader(reader); 29 String carLine = null; 30 int carNum = 0; 31 List
carList = new ArrayList
(); 32 while ((carLine = br.readLine()) != null) { 33 if (!carLine.contains("#")) { 34 //System.out.println(carLine); 35 // System.out.println("进来了"); 36 37 38 Pattern car_p = Pattern.compile("[0-9A-Z]+"); 39 Matcher car_m = car_p.matcher(carLine); 40 String[] strCarNode = new String[5]; 41 int[] intCarNode=new int[5]; 42 // int index = 0; 43 // while (m.find()) { 44 // //System.out.println(m.group()); 45 // strCarNode[index++] = m.group(); 46 // intCarNode [index++] = Integer.parseInt(strCarNode[index++]); 47 // } 48 for (int i = 0; car_m.find()&&i < strCarNode.length; i++) { 49 strCarNode[i] = car_m.group(); 50 intCarNode [i] = Integer.parseInt(strCarNode[i]); 51 //System.out.println(intCarNode[i]); 52 } 53 car_Node car = new car_Node(intCarNode[0],intCarNode[1],intCarNode[2],intCarNode[3],intCarNode[4]); 54 System.out.println(car); 55 carList.add(car); 56 carNum++; 57 } 58 59 } 60 61 //System.out.println("读取总条数:" + count + "||读取的list的长度" + list.size()); 62 63 // System.out.println(carList); 64 65 66 // for (int i = 0; i < 1000; i++) { 67 // System.out.print(carList.get(i).id); 68 // System.out.print(carList.get(i).from); 69 // System.out.print(carList.get(i).to); 70 // System.out.print(carList.get(i).speed); 71 // System.out.println(carList.get(i).planTime); 72 // 73 // 74 // } 75 76 return carList; 77 78 } 79 // public static void main(String [] args) { 80 // try { 81 // read_Car(); 82 // } catch (IOException e) { 83 // // TODO Auto-generated catch block 84 // e.printStackTrace(); 85 // } 86 // } 87 88 public static class car_Node { 89 private int id; 90 private int from; 91 private int to; 92 private int speed; 93 private int planTime; 94 95 96 public car_Node(int id, int from, int to, int speed, int planTime) { 97 this.id = id; 98 this.from = from; 99 this.to = to;100 this.speed = speed;101 this.planTime = planTime;102 103 }104 105 public int getId() {106 return id;107 }108 109 public void setId(int id) {110 this.id = id;111 }112 113 public int getFrom() {114 return from;115 }116 117 public void setFrom(int from) {118 this.from = from;119 }120 121 public int getTo() {122 return to;123 }124 125 public void setTo(int to) {126 this.to = to;127 }128 129 public int getSpeed() {130 return speed;131 }132 133 public void setSpeed(int speed) {134 this.speed = speed;135 }136 137 public int getPlanTime() {138 return planTime;139 }140 141 public void setPlanTime(int planTime) {142 this.planTime = planTime;143 }144 145 public String toString() {146 147 return "car_Node [id=" + id + ", from=" + from+", to=" + to + ", speed=" + speed+ ",planTime=" + planTime148 + "]";149 }150 151 }}

 

1) 输入输出流

String pathname = "C:\\Users\\11940\\Desktop\\1-map-training-2\\car.txt";

FileReader reader = new FileReader(pathname);

BufferedReader br = new BufferedReader(reader);

这里我主要是创建一个FileReader对象将文件读取出来。

其实读取字符有两种方式,除了FileReader类以外,还有FileInputStream类。那么它们之间有什么联系(区别)呢?

FileReader类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream 

FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader

对比文档我们可以得出结论:FileReader用于字符流, FileInputStream用于字节流。这两种方法其实差不多,都是从文件中写入数据或读出数据,区别就是字节流是以字节为单位进行操作的,而字符流是以字符为单位进行操作的一个英文字母占一个字节,一个中文汉字占两个字节,而一个英文字母与一个中文汉字我们都称之为一个字符)。

2)正则表达式

我把每一行读取出来后,发现字符流是(10005, 98, 1, 6, 44)的,需要把车赋予各个属性的话就必须把这些数字分别读取出来。

于是我采用正则表达式,以下是摘自API

通过调用模式的  方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:

 方法尝试将整个输入序列与该模式匹配。

 尝试将输入序列从头开始与该模式匹配。

 方法扫描输入序列以查找与该模式匹配的下一个子序列。

每个方法都返回一个表示成功或失败的布尔值。通过查询匹配器的状态可以获取关于成功匹配的更多信息。

https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin

 

转载于:https://www.cnblogs.com/tianliang94/p/10591051.html

你可能感兴趣的文章
yii日志功能详解
查看>>
前端开发面试题【转】
查看>>
AndEngine引擎学习之环境配置以及示例修改
查看>>
2014阿里云AWDC参会总结
查看>>
Echarts饼形图(二)
查看>>
Winform Timer控件时间间隔
查看>>
Android研发中对String的思考
查看>>
Phpcms V9添加网站地图Sitemap静态地图方法(一)
查看>>
datetimepicker一个不错的日历android特效
查看>>
AVFoundation实现动态人脸识别
查看>>
第一天
查看>>
分享国外Python大咖如何在5个月内找到一份薪水翻番的工作的?
查看>>
集群架构-用keepalived配置高可用集群
查看>>
10 种最常见的 Javascript 错误(频率最高)
查看>>
获取websocket数据,C#小窗口程序,FTP上传,一切皆配置
查看>>
0025-CENTOS6.5安装CDH5.12.1(二)
查看>>
保险资管需求多元化 壹资管平台赋能行业智能化转型
查看>>
Velocity模板概念及简单使用
查看>>
Java 基础语法
查看>>
css实现强制不换行/自动换行/强制换行
查看>>