其他分享
首页 > 其他分享> > BLOG-3

BLOG-3

作者:互联网

(1)前言:

这三次PTA作业都是围绕着电信计费问题的,电信计费系列作业分为了三次,每次作业分别解决座机计费、手机计费及短信计费的问题。个人认为这三次大作业的难度不高。三次PTA中的第一次PTA给出了电信计费问题的大部分类图,所以我们只需要构建好已给的类,然后再正确补充好每个类的内容,这样我们就完成了很大一部分工作。这次系列问题唯一的难点就是在于Main类的设计以及如何明白并构建各类之间的联系。一开始我花了很长一段时间在看懂类图及揣摩出各类之间的关系,在完成这一步后写出代码几乎就是水到渠成了。

(2)设计与分析:

在判断输入信息是否正确时,我的解决方法是构建一个String类型数组,将每一次输入的信息与数组中每一条信息进行比较,不同则存入数组,相同则抛弃,进行下一次信息输入。然后我再用多种正则表达式来判断输入信息是否符合正确格式,是则进行下一步的信息拆分并存储。

在存储信息这一步,我是同过每一条正确信息的首个字符是什么来进行第一步信息分类,u为开户,t为通话记录,m为消息记录。若为t,我在通过空格的位置将字符串细分。通过判断特定位置数组中所含的字符串的长度是哪种通话记录类型,然后在进行相应的通话记录信息存储过程。

在存储信息这一步,我是利用了for-each循环,将每一个已开户用户的电话号码与通话记录中的接听用户与拨打用户进行比较,让然后在根据各自的区号,存储进不同类型的通话记录容器中。

座机计费:

实现一个简单的电信计费程序:
假设南昌市电信分公司针对市内座机用户采用的计费方式:
月租20元,接电话免费,市内拨打电话0.1元/分钟,省内长途0.3元/分钟,国内长途拨打0.6元/分钟。不足一分钟按一分钟计。
南昌市的区号:0791,江西省内各地市区号包括:0790~0799以及0701。

输入格式:

输入信息包括两种类型
1、逐行输入南昌市用户开户的信息,每行一个用户,
格式:u-号码 计费类型 (计费类型包括:0-座机 1-手机实时计费 2-手机A套餐)
例如:u-079186300001 0
座机号码除区号外由是7-8位数字组成。
本题只考虑计费类型0-座机计费,电信系列2、3题会逐步增加计费类型。
2、逐行输入本月某些用户的通讯信息,通讯信息格式:
座机呼叫座机:t-主叫号码 接听号码 起始时间 结束时间
t-079186330022 058686330022 2022.1.3 10:00:25 2022.1.3 10:05:11
以上四项内容之间以一个英文空格分隔,
时间必须符合"yyyy.MM.dd HH:mm:ss"格式。提示:使用SimpleDateFormat类。
以上两类信息,先输入所有开户信息,再输入所有通讯信息,最后一行以“end”结束。
注意:
本题非法输入只做格式非法的判断,不做内容是否合理的判断(时间除外,否则无法计算),比如:
1、输入的所有通讯信息均认为是同一个月的通讯信息,不做日期是否在同一个月还是多个月的判定,直接将通讯费用累加,因此月租只计算一次。
2、记录中如果同一电话号码的多条通话记录时间出现重合,这种情况也不做判断,直接 计算每条记录的费用并累加。
3、用户区号不为南昌市的区号也作为正常用户处理。

输出格式:

根据输入的详细通讯信息,计算所有已开户的用户的当月费用(精确到小数点后2位,
单位元)。假设每个用户初始余额是100元。
每条通讯信息单独计费后累加,不是将所有时间累计后统一计费。
格式:号码+英文空格符+总的话费+英文空格符+余额
每个用户一行,用户之间按号码字符从小到大排序。

错误处理:
输入数据中出现的不符合格式要求的行一律忽略。

手机计费:

实现南昌市电信分公司的计费程序,假设该公司针对手机和座机用户分别采取了两种计费方案,分别如下:
1、针对市内座机用户采用的计费方式(与电信计费系列1内容相同):
月租20元,接电话免费,市内拨打电话0.1元/分钟,省内长途0.3元/分钟,国内长途拨打0.6元/分钟。不足一分钟按一分钟计。
假设本市的区号:0791,江西省内各地市区号包括:0790~0799以及0701。
2、针对手机用户采用实时计费方式:
月租15元,市内省内接电话均免费,市内拨打市内电话0.1元/分钟,市内拨打省内电话0.2元/分钟,市内拨打省外电话0.3元/分钟,省内漫游打电话0.3元/分钟,省外漫游接听0.3元/分钟,省外漫游拨打0.6元/分钟;
注:被叫电话属于市内、省内还是国内由被叫电话的接听地点区号决定,比如以下案例中,南昌市手机用户13307912264在区号为020的广州接听了电话,主叫号码应被计算为拨打了一个省外长途,同时,手机用户13307912264也要被计算省外接听漫游费:
u-13307912264 1
t-079186330022 13307912264 020 2022.1.3 10:00:25 2022.1.3 10:05:11

输入:
输入信息包括两种类型
1、逐行输入南昌市用户开户的信息,每行一个用户,含手机和座机用户
格式:u-号码 计费类型 (计费类型包括:0-座机 1-手机实时计费 2-手机A套餐)
例如:u-079186300001 0
座机号码由区号和电话号码拼接而成,电话号码包含7-8位数字,区号最高位是0。
手机号码由11位数字构成,最高位是1。
本题在电信计费系列1基础上增加类型1-手机实时计费。
手机设置0或者座机设置成1,此种错误可不做判断。
2、逐行输入本月某些用户的通讯信息,通讯信息格式:
座机呼叫座机:t-主叫号码 接听号码 起始时间 结束时间
t-079186330022 058686330022 2022.1.3 10:00:25 2022.1.3 10:05:11
以上四项内容之间以一个英文空格分隔,
时间必须符合"yyyy.MM.dd HH:mm:ss"格式。提示:使用SimpleDateFormat类。
输入格式增加手机接打电话以及收发短信的格式,手机接打电话的信息除了号码之外需要额外记录拨打/接听的地点的区号,比如:
座机打手机:
t-主叫号码 接听号码 接听地点区号 起始时间 结束时间
t-079186330022 13305862264 020 2022.1.3 10:00:25 2022.1.3 10:05:11
手机互打:
t-主叫号码 拨号地点 接听号码 接听地点区号 起始时间 结束时间
t-18907910010 0791 13305862264 0371 2022.1.3 10:00:25 2022.1.3 10:05:11

注意:以上两类信息,先输入所有开户信息,再输入所有通讯信息,最后一行以“end”结束。

输出:
根据输入的详细通讯信息,计算所有已开户的用户的当月费用(精确到小数点后2位,单位元)。假设每个用户初始余额是100元。
每条通讯、短信信息均单独计费后累加,不是将所有信息累计后统一计费。
格式:号码+英文空格符+总的话费+英文空格符+余额
每个用户一行,用户之间按号码字符从小到大排序。

错误处理:
输入数据中出现的不符合格式要求的行一律忽略。

短信计费:

实现一个简单的电信计费程序,针对手机的短信采用如下计费方式:
1、接收短信免费,发送短信0.1元/条,超过3条0.2元/条,超过5条0.3元/条。
2、如果一次发送短信的字符数量超过10个,按每10个字符一条短信进行计算。

输入:
输入信息包括两种类型
1、逐行输入南昌市手机用户开户的信息,每行一个用户。
格式:u-号码 计费类型 (计费类型包括:0-座机 1-手机实时计费 2-手机A套餐 3-手机短信计费)
例如:u-13305862264 3
座机号码由区号和电话号码拼接而成,电话号码包含7-8位数字,区号最高位是0。
手机号码由11位数字构成,最高位是1。
本题只针对类型3-手机短信计费。
2、逐行输入本月某些用户的短信信息,短信的格式:
m-主叫号码,接收号码,短信内容 (短信内容只能由数字、字母、空格、英文逗号、英文句号组成)
m-18907910010 13305862264 welcome to jiangxi.
m-13305862264 18907910010 thank you.

注意:以上两类信息,先输入所有开户信息,再输入所有通讯信息,最后一行以“end”结束。
输出:
根据输入的详细短信信息,计算所有已开户的用户的当月短信费用(精确到小数点后2位,单位元)。假设每个用户初始余额是100元。
每条短信信息均单独计费后累加,不是将所有信息累计后统一计费。
格式:号码+英文空格符+总的话费+英文空格符+余额
每个用户一行,用户之间按号码字符从小到大排序。
错误处理:
输入数据中出现的不符合格式要求的行一律忽略。
本题只做格式的错误判断,无需做内容上不合理的判断,比如同一个电话两条通讯记录的时间有重合、开户号码非南昌市的号码、自己给自己打电话等,此类情况都当成正确的输入计算。但时间的输入必须符合要求,比如不能输入2022.13.61 28:72:65。

本题只考虑短信计费,不考虑通信费用以及月租费。

 

  1 package 第八次第一题;
  2 
  3 import java.text.DecimalFormat;
  4 import java.text.ParseException;
  5 import java.text.SimpleDateFormat;
  6 import java.util.ArrayList;
  7 import java.util.Collections;
  8 import java.util.Date;
  9 import java.util.Scanner;
 10 
 11 public class Main  {
 12 
 13     public static void main(String[] args) throws ParseException {
 14         Scanner input=new Scanner(System.in);
 15         ArrayList<User> users=new ArrayList<User>();
 16         ArrayList<String> inputDate=new ArrayList<String>();
 17         while(true) {
 18             int repeat=0;
 19             String s=input.nextLine();            
 20             for(String d:inputDate) {
 21                 if(d.equals(s))repeat++;
 22             }
 23             inputDate.add(s);
 24             if(s.equals("end")) {
 25                 ArrayList<Double> land=new ArrayList<Double>();
 26                 ArrayList<Double> cell=new ArrayList<Double>();
 27                 for(User user:users) {
 28                     if(user.getNumber().matches("0.+")) {
 29                         double a=Double.parseDouble(user.getNumber());
 30                     land.add(a);
 31                     }
 32                     else if(user.getNumber().matches("1.+")) {
 33                         double b=Double.parseDouble(user.getNumber());
 34                         cell.add(b);
 35                     }
 36                 }                
 37                 for( ;land.size()!=0; ) {
 38                     double min=Collections.min(land);
 39                     for(User user:users) {
 40                         if(Double.parseDouble(user.getNumber())==min) {                            
 41                             double cost=user.calCost();
 42                             double balance=user.calBalance();
 43                             DecimalFormat x1 = new DecimalFormat("###.0#");
 44                             double cost1=Double.parseDouble(x1.format(cost));
 45                             double balance1=Double.parseDouble(x1.format(balance));
 46                             System.out.println(user.getNumber()+" "+cost1+" "+balance1);
 47                             land.remove(min);                                                    
 48                         }
 49                     }
 50                 }
 51                 for( ;cell.size()!=0; ) {
 52                     double min=Collections.min(cell);
 53                     for(User user:users) {
 54                         if(Double.parseDouble(user.getNumber())==min) {                            
 55                             double cost=user.calCost();
 56                             double balance=user.calBalance();
 57                             DecimalFormat x1 = new DecimalFormat("###.0#");
 58                             double cost1=Double.parseDouble(x1.format(cost));
 59                             double balance1=Double.parseDouble(x1.format(balance));
 60                             System.out.println(user.getNumber()+" "+cost1+" "+balance1);
 61                             cell.remove(min);                                                    
 62                         }
 63                     }
 64                 }
 65                 break;
 66             }
 67             else {
 68                 if(repeat==0) {    //消息不重复            
 69                     if(judgeFormat(s)) {
 70                         if(s.matches("u.+")) {
 71                             StoreData.u(s,users);
 72                         }
 73                         else if(s.matches("t.+")) {
 74                             StoreData.t(s, users);
 75                         }
 76                         else if(s.matches("m.+")){
 77                             StoreData.m(s,users);
 78                         }
 79                     }
 80                 }
 81             }
 82         }
 83         input.close();
 84     }
 85     public static boolean judgeFormat(String s) {
 86         boolean judge=false;
 87         if(s.matches("u-0791[0-9]{7,8}\\s[0-2]")) {//座机开户
 88             judge=true;
 89         }
 90         else if(s.matches("u-1[0-9]{10}\\s[0-3]")) {//手机开户
 91             judge=true;
 92         }
 93         else if(s.matches("t-[0-9]{10,12}\\s[0-9]{10,12}\\s.+")) {
 94             judge=true;//座机打座机
 95         }
 96         else if(s.matches("t-[0-9]{10,12}\\s1[0-9]{10}\\s[0-9]{3,4}\\s.+")) {
 97             judge=true;//座机打手机
 98         }
 99         else if(s.matches("t-1[0-9]{10}\\s[0-9]{3,4}\\s1[0-9]{10}\\s[0-9]{3,4}\\s.+")) {
100             judge=true;//手机打手机
101         }
102         else if(s.matches("t-1[0-9]{10}\\s[0-9]{3,4}\\s[0-9]{10,12}\\s.+")) {
103             judge=true;//手机打座机            
104         }
105         else if(s.matches("m-1[0-9]{10}\\s1[0-9]{10}\\s([0-9]|\\w|\\s|,|\\.)+")) {
106             judge=true;//手机间短信
107         }
108         return judge;
109     }            
110 }
  1 package 第八次第一题;
  2 
  3 import java.text.ParseException;
  4 import java.text.SimpleDateFormat;
  5 import java.util.ArrayList;
  6 import java.util.Date;
  7 
  8 public class StoreData {
  9     
 10     public static void u(String s,ArrayList<User> users) {
 11         String[] ss = s.split(" ");
 12         String number= ss[0].substring(2);//号码
 13         String choice=ss[1];//计费类型
 14         if(number.matches("0.+")) {
 15             users.add(new User(new LandlinePhoneCharging(),number));
 16         }
 17         else if(number.matches("1.+")) {
 18             users.add(new User(new CellphoneCharging(),number));
 19         }
 20     }
 21     
 22     public static void t(String s,ArrayList<User> users) throws ParseException  {
 23         String[] ss = s.split(" ");
 24         if(ss.length==6) {//座机打座机
 25             if(timeformat(s,ss.length)) {
 26                 LandLand(ss,users);
 27             }            
 28         }
 29         else if(ss.length==7) {//手机与座机互打
 30             if(timeformat(s,ss.length)) {
 31                 if(ss[1].length()==11) {
 32                 LandCell(ss, users);                            
 33                 }
 34                 else CellLand(ss, users);
 35             }            
 36         }
 37         else if(ss.length==8) {//手机打手机
 38             if(timeformat(s,ss.length)) {
 39                 CellCell(ss,users);
 40             }            
 41         }
 42         
 43     }
 44     public static void m(String s,ArrayList<User> users) {
 45         String message=s.substring(26);
 46         String[] ss = s.split(" ");
 47         String sendnumber=ss[0].substring(2);
 48         String receivenumber=ss[1];
 49         for(User user:users) {
 50             String number=user.getNumber();
 51             if(number.equals(sendnumber))user.getUserRecords().addSendMessageRecords(new MessageRecord(message));
 52             else if(number.equals(receivenumber))user.getUserRecords().addReceiveMessageRecords(new MessageRecord(message));
 53         }
 54     }
 55     public static boolean timeformat(String s,int length) {
 56         boolean flag1=false;
 57         boolean flag2=false;
 58         String[] ss = s.split(" ");
 59         String time1=ss[length-4]+","+ss[length-3];
 60         String time2=ss[length-2]+","+ss[length-1];
 61         if(time1.matches("202[0-9].([13578]|10|12).([1-9]|[12][0-9]|3[01]),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag1=true;//大月
 62         else if(time1.matches("202[0-9].([469]|11).([1-9]|[12][0-9]|30),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag1=true;//小月
 63         else if(time1.matches("202[048].2.([1-9]|[12][0-9]),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag1=true;//闰年2月
 64         else if(time1.matches("202[048].2.([1-9]|1[0-9]|2[0-8]),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag1=true;//非闰年2月
 65         
 66         if(time2.matches("202[0-9].([13578]|10|12).([1-9]|[12][0-9]|3[01]),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag2=true;//大月
 67         else if(time2.matches("202[0-9].([469]|11).([1-9]|[12][0-9]|30),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag2=true;//小月
 68         else if(time2.matches("202[048].2.([1-9]|[12][0-9]),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag2=true;//闰年2月
 69         else if(time2.matches("202[048].2.([1-9]|1[0-9]|2[0-8]),([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"))flag2=true;//非闰年2月
 70         if(flag1&&flag2)return true;
 71         else return false;
 72     }
 73     public static void LandLand(String[] ss,ArrayList<User> users) throws ParseException {
 74         //0是拨打的号码,1是接听的号码,2、3是开始时间,4、5是结束时间
 75         String callnumber= ss[0].substring(2);
 76         String answernumber=ss[1];
 77         String callnumbercode=callnumber.substring(0, 4);
 78         String answernumbercode=answernumber.substring(0, 4);
 79         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
 80         Date starttime=simpleDateFormat.parse(ss[2]+" "+ss[3]);
 81         Date endtime=simpleDateFormat.parse(ss[4]+" "+ss[5]);
 82         for(User user:users) {
 83             String number=user.getNumber();
 84             if(number.equals(callnumber)) {
 85                 if(answernumbercode.matches("0791")) {
 86                     user.getUserRecords().addCallingInCityRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
 87                 }
 88                 else if(answernumbercode.matches("0701|079[0-9]")) {
 89                     user.getUserRecords().addCallingInProvinceRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
 90                 }
 91                 else {
 92                     user.getUserRecords().addCallingInLandRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
 93                 }
 94                 
 95             }
 96             else if(number.equals(answernumber)) {
 97                 if(callnumbercode.matches("0791")) {
 98                     user.getUserRecords().addAnswerInCityRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
 99                 }
100                 else if(callnumbercode.matches("0701|079[0-9]")) {
101                     user.getUserRecords().addAnswerInProvinceRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
102                 }
103                 else {
104                     user.getUserRecords().addAnswerInProvinceRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
105                 }
106             }
107         }
108     }
109     public static void CellLand(String[] ss,ArrayList<User> users) throws ParseException {
110         //0是拨打的手机号码,1是拨打手机区号,2是接听座机号码,3、4是开始时间,5、6是结束时间
111         String callCellPhone=ss[0].substring(2);
112         String callcellphonecode=ss[1];
113         String answernumber=ss[2];
114         
115         String answernumbercode=answernumber.substring(0, 4);
116         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
117         Date starttime=simpleDateFormat.parse(ss[3]+" "+ss[4]);
118         Date endtime=simpleDateFormat.parse(ss[5]+" "+ss[6]);
119         for(User user:users) {
120             String number=user.getNumber();
121             if(number.equals(callCellPhone)) {
122                 if(callcellphonecode.equals("0791")) {
123                     if(answernumbercode.matches("0791")) {
124                         user.getUserRecords().addCallingInCityRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
125                     }
126                     else if(answernumbercode.matches("0701|079[0-9]")) {
127                         user.getUserRecords().addCallingInProvinceRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
128                     }
129                     else {
130                         user.getUserRecords().addCallingInLandRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
131                     }
132                 }
133                 else if(callcellphonecode.matches("0701|079[0-9]")) {
134                     user.getUserRecords().addprovinceCallingRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
135                 }
136                 else user.getUserRecords().addlandCallingRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
137             }
138             else if(number.equals(answernumber)) {
139                 if(callcellphonecode.matches("0791")) {
140                     user.getUserRecords().addAnswerInCityRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
141                 }
142                 else if(callcellphonecode.matches("0701|079[0-9]")) {
143                     user.getUserRecords().addAnswerInProvinceRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
144                 }
145                 else {
146                     user.getUserRecords().addAnswerInProvinceRecords(new CallRecord(starttime,endtime,callcellphonecode,answernumbercode));
147                 }
148             }
149         }
150         
151     }
152     
153     public static void LandCell(String[] ss,ArrayList<User> users) throws ParseException {
154         //0是拨打的座机号码,1是接听手机号码,2是接听手机区号,3、4是开始时间,5、6是结束时间
155         String callnumber=ss[0].substring(2);
156         String answercellphone=ss[1];
157         String answercellphonecode=ss[2];
158         String callnumbercode=callnumber.substring(0, 4);
159         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
160         Date starttime=simpleDateFormat.parse(ss[3]+" "+ss[4]);
161         Date endtime=simpleDateFormat.parse(ss[5]+" "+ss[6]);
162         for(User user:users) {
163             String number=user.getNumber();
164             if(number.equals(callnumber)) {
165                 if(answercellphonecode.matches("0791")) {
166                     user.getUserRecords().addCallingInCityRecords(new CallRecord(starttime,endtime,callnumbercode,answercellphonecode));
167                 }
168                 else if(answercellphonecode.matches("0701|079[0-9]")) {
169                     user.getUserRecords().addCallingInProvinceRecords(new CallRecord(starttime,endtime,callnumbercode,answercellphonecode));
170                 }
171                 else {
172                     user.getUserRecords().addCallingInLandRecords(new CallRecord(starttime,endtime,callnumbercode,answercellphonecode));
173                 }
174             }
175             else if(number.equals(answercellphone)) {
176                 if(answercellphonecode.matches("0791")) {
177                     user.getUserRecords().addAnswerInCityRecords(new CallRecord(starttime,endtime,callnumbercode,answercellphonecode));
178                 }
179                 else if(answercellphonecode.matches("0701|079[0-9]")) {
180                     user.getUserRecords().addAnswerInProvinceRecords(new CallRecord(starttime,endtime,callnumbercode,answercellphonecode));
181                 }
182                 else {
183                     user.getUserRecords().addAnswerInLandRecords(new CallRecord(starttime,endtime,callnumbercode,answercellphonecode));
184                 }
185             }
186         }
187     }
188     
189     public static void CellCell(String[] ss,ArrayList<User> users) throws ParseException {
190         //0是拨打的手机号码,1是拨打的手机区号,2是接听的手机号码,3是接听的手机区号,4、5是开始时间,6、7是结束时间
191         String callcellphone=ss[0].substring(2);
192         String callnumbercode=ss[1];
193         String answercellphone=ss[2];
194         String answernumbercode=ss[3];
195         
196         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
197         Date starttime=simpleDateFormat.parse(ss[4]+" "+ss[5]);
198         Date endtime=simpleDateFormat.parse(ss[6]+" "+ss[7]);
199         for(User user:users) {
200             String number=user.getNumber();
201             if(number.equals(callcellphone)) {
202                 if(callnumbercode.matches("0791")) {
203                     if(answernumbercode.matches("0791"))user.getUserRecords().addCallingInCityRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
204                     else if(answernumbercode.matches("0701|079[0-9]"))user.getUserRecords().addCallingInProvinceRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
205                     else user.getUserRecords().addCallingInLandRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
206                 }
207                 else if(callnumbercode.matches("0701|079[0-9]")) {
208                     user.getUserRecords().addprovinceCallingRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
209                 }
210                 else {
211                     user.getUserRecords().addlandCallingRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
212                 }
213             }
214             else if(number.equals(answercellphone)) {
215                 if(answernumbercode.matches("0791"))break;
216                 else if(answernumbercode.matches("0701|079[0-9]"))break;
217                 else user.getUserRecords().addAnswerInLandRecords(new CallRecord(starttime,endtime,callnumbercode,answernumbercode));
218             }
219         }
220     }
221     
222 }

 这里插入了两个自己设计的类,一个是主类Main,另一个是用来储存信息的类StoreData。

(3)踩坑心得:

这次电信计费问题系列的题目是我明白了,如果写代码能够提前将代码的框架构建好,这样我们在接下来的工作中会轻松很多,我们需要做的只是去修缮框架和填充内容,这样的工作量远远小于一边构造框架一边写具体代码,而且我认为提前构造框架也会降低写代码的难度。

(4)改进建议:

本系列作业我前两次电信的作业都没有达到满分,所以还是存在很多可以改进的地方,并且也仍有很多地方存在代码复制等问题,要改进我可以从这些地方着手。

(5)总结:

写代码,最重要的仍然是自己知识的储备量,如果自己连最基础的代码知识都不懂的话,优秀的代码是不会被写出来的,甚至你写不出一段正确的代码,更遑论借鉴他人的代码。我们还是要认真学习任何代码知识,然后多去看一些源码,我认为这样可以学到好多东西。

标签:String,ss,else,BLOG,matches,user,new
来源: https://www.cnblogs.com/ly-3-8/p/16360461.html