电信大作业总结

1.前言

转眼间学期临近结束, Java作为一门面向对象编程的语言,最近三周在经历三次作业的训练后我也算是对Java的学习有了更深入的进展。回归正题讲述我这三次题目集的知识点、题量、难度等情况

第一次作业:电信计费的入门,主要是对座机计费的考察,考虑到难度较大情况,本次并未设置较多障碍,通过题目提供的类图进行设计与深化,主类则是需要自我完善,正则表达式筛出所有不合格情况

第二次作业:引入了手机用户增大了难度但并不是特别难,无非是新增计费类型,计费规则,由于前面搭好了架子因此本次作业只不过是简单的顺水推舟

第三次作业:单纯考察短信,过于简单,在此不过多赘述。

2.设计与分析

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Date;
public class Main {
        public static void main(String[] args) throws ParseException{
        SimpleDateFormat SimpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    ArrayList<User> Users=new ArrayList<User>();
    Scanner sc=new Scanner(System.in);
    String a=sc.nextLine();
    int m=0;
    while(true)
    {
        if(a.matches("[u]-0791[0-9]{7,8} 0"))
        {
        Users.add(new User());
        int q=a.indexOf(' ');
        Users.get(m).number=a.substring(2,q);
        Users.get(m).chargeMode=new LandlinePhoneCharging();
        }
        m++;
         a=sc.nextLine();
         if(a.charAt(0)=='t')
             break;
    }
    String c=a;
      while(!c.equals("end"))
    { 
        int n=0;
        int l=Users.size();
 if(c.matches("t-[\\d]{11,12}\\s[\\d]{11,12}\\s[\\d]{4}.[\\d]{1,2}.[\\d]{1,2}\\s([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])\\s[\\d]{4}.[\\d]{1,2}.[\\d]{1,2}\\s([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])"))
        {
            while(n<l)
          {  
            
                try{ 
                     // 可能会导致错误的代码
                  int q=c.indexOf(' ');
            if(Users.get(n).number.equals(c.substring(2,q)))
            {
                
                if(User.numaeral(c.substring(q+2,q+5))==0)
                {
                    
                    q=c.indexOf(' ',q+1);
                    int w=q;
                    q=c.indexOf(' ',q+1);
                    q=c.indexOf(' ',q+1);
                    if(check(c.substring(w+1, q))&&check(c.substring(q+1)))
                {
                    Users.get(n).userRecords.callingInCityRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingInCityRecords.size();
Users.get(n).userRecords.callingInCityRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(w+1, q));
Users.get(n).userRecords.callingInCityRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(q+1));
                }
                }
                else if(User.numaeral(c.substring(q+2,q+5))==1)
                {
                    
                    q=c.indexOf(' ',q+1);
                    int w=q;
                    q=c.indexOf(' ',q+1);
                    q=c.indexOf(' ',q+1);
                    if(check(c.substring(w+1, q))&&check(c.substring(q+1)))
                    {
                    Users.get(n).userRecords.callingInProvinceRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingInProvinceRecords.size();
Users.get(n).userRecords.callingInProvinceRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(w+1, q));
Users.get(n).userRecords.callingInProvinceRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(q+1));
                    }    
                }
                else
                {
                    
                    q=c.indexOf(' ',q+1);
                    int w=q;
                    q=c.indexOf(' ',q+1);
                    q=c.indexOf(' ',q+1);
                    if(check(c.substring(w+1, q))&&check(c.substring(q+1)))
                    {
                    Users.get(n).userRecords.callingInLandRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingInLandRecords.size();
Users.get(n).userRecords.callingInLandRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(w+1, q));
Users.get(n).userRecords.callingInLandRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(q+1));
                }
                }
            }
                }
                catch(Exception e){ 
                     // 在错误发生时怎么处理
                    } 
            n++;
         }
    }
        c=sc.nextLine();
    }
    int y;
    int j;
    User t=new User();
    for(y=0;y<Users.size();y++)
    {
        for(j=y+1;j<Users.size();j++)
        {
            if(Users.get(y).number.equals(Users.get(j).number))
            {
                Users.remove(j);
            }
            else if(Users.get(y).number.charAt(11)>Users.get(j).number.charAt(11))
            {
                t=Users.get(y);
                Users.set(y, Users.get(j));
                Users.set(j,t);
            }
            
        }    
    }
    y=0;
    while(y<Users.size())
    {  
        System.out.printf("%s %.1f %.1f",Users.get(y).number,Users.get(y).calCost(),(80-Users.get(y).calCost()));
        System.out.printf("\n");
        y++;    
    }
}
    static boolean check (String str) {
        SimpleDateFormat sd=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");//括号内为日期格式,y代表年份,M代表年份中的月份(为避免与小时中的分钟数m冲突,此处用M),d代表月份中的天数
        try {
            sd.setLenient(false);//此处指定日期/时间解析是否不严格,在true是不严格,false时为严格
            sd.parse(str);//从给定字符串的开始解析文本,以生成一个日期
        }
        catch (Exception e) {
            return false;
        }
        return true;
    }
}
abstract class CallChargeRule extends ChargeRule {
    SimpleDateFormat SimpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    public abstract double calCost (UserRecords  userRecords);
}
class CallRecord extends CommunicationRecord{
    Date startTime;
    Date endTime;
    String callingAddressAreaCode;
    String answerAddressAreaCode;
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public String getCallingAddressAreaCode() {
        return callingAddressAreaCode;
    }
    public void setCallingAddressAreaCode(String callingAddressAreaCode) {
        this.callingAddressAreaCode = callingAddressAreaCode;
    }
    public String getAnswerAddressAreaCode() {
        return answerAddressAreaCode;
    }
    public void setAnswerAddressAreaCode(String answerAddressAreaCode) {
        this.answerAddressAreaCode = answerAddressAreaCode;
    }
}
abstract class chargeMode {
    ArrayList<ChargeRule> chargeRules = new ArrayList<>();
    public  abstract double calCost (UserRecords userRecords);
    public  abstract double  getMonthlyRent ();
    public ArrayList<ChargeRule> getChargeRules() {
        return chargeRules;
    }
    public void setChargeRules(ArrayList<ChargeRule> chargeRules) {
        this.chargeRules = chargeRules;
    }
}
abstract class ChargeRule {
    public abstract double calCost (UserRecords userRecords);
}
abstract class CommunicationRecord {
    String callingNumber;
    String answerNumber;
    public String getCallingNumber() {
        return callingNumber;
    }
    public void setCallingNumber(String callingNumber) {
        this.callingNumber = callingNumber;
    }
    public String getAnswerNumber() {
        return answerNumber;
    }
    public void setAnswerNumber(String answerNumber) {
        this.answerNumber = answerNumber;
    }
}
class LandlinePhoneCharging extends chargeMode {

    @Override
    public double calCost(UserRecords userRecords) {
         chargeRules.add(new LandPhoneInCityRule());
         chargeRules.add(new LandPhoneInProvinceRule());
         chargeRules.add(new LandPhoneInlandRule());
return chargeRules.get(0).calCost(userRecords)+chargeRules.get(1).calCost(userRecords)+chargeRules.get(2).calCost(userRecords);
    }

    @Override
    public double getMonthlyRent() {
        // TODO Auto-generated method stub
        return 20;
    }

}
 class LandPhoneInCityRule extends CallChargeRule {
    @Override
    public double calCost(UserRecords userRecords) {
        int i=0;
        double s=0;
        double m=0;
        while(i<userRecords.callingInCityRecords.size())
        {
            try {
        long time1=userRecords.callingInCityRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInCityRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.1+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        if(m>=0)
        return m;
        else
        {
         return 0;
        }
    }
}
class LandPhoneInlandRule extends CallChargeRule {

    @Override
    public double calCost(UserRecords userRecords) {
        int i=0;
        double s=0;
        double m=0;
        while(i<userRecords.callingInLandRecords.size())
        {
            try {
        long time1=userRecords.callingInLandRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInLandRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
          m=m+Math.ceil(s/1000/60)*0.6;
        }
            catch(Exception e){ 
                 i++;
                } 
        }
        if(m>=0)
        return m;
        else
        {
         return 0;
        }
    }
    }

class LandPhoneInProvinceRule extends CallChargeRule {

    @Override
    public double calCost(UserRecords  userRecords) {
        int i=0;
        double s=0;
        double m=0;
        while(i<userRecords.callingInProvinceRecords.size())
        {
            try {
        long time1=userRecords.callingInProvinceRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInProvinceRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.3+m;
        }
            catch(Exception e){ 
                i++;
                } 
        }
        if(m>=0)
        return m;
        else
        {
         return 0;
        }
    }

}
class  MessageRecord extends CommunicationRecord{
 String message;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}
}
class User {
    UserRecords userRecords =new UserRecords();
    double balance=100;
    chargeMode chargeMode;
    String number;
    public UserRecords getUserRecords() {
        return userRecords;
    }
    public void setUserRecords(UserRecords userRecords) {
        this.userRecords = userRecords;
    }
    public double getBalance() {
        return balance;
    }
    public chargeMode getChargeMode() {
        return chargeMode;
    }
    public void setChargeMode(chargeMode chargeMode) {
        this.chargeMode = chargeMode;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public double calBalance () {
        return balance;    
    }
   public double calCost () {
       return chargeMode.calCost(userRecords);
    }
public static int numaeral(String number) {
    if(Integer.parseInt(number)==791)
        return 0;
    else if(Integer.parseInt(number)>=790&&Integer.parseInt(number)<799||Integer.parseInt(number)==701)
    return 1;
    else
        return 2;
}
}
class UserRecords {
     ArrayList<CallRecord> callingInCityRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> callingInProvinceRecords =new ArrayList<CallRecord>();
     ArrayList<CallRecord> callingInLandRecords=new ArrayList<CallRecord>();
    ArrayList<CallRecord> answerInCityRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> answerInProvinceRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> answerInLandRecords=new ArrayList<CallRecord>();
     ArrayList<MessageRecord> sendMessageRecords=new ArrayList<MessageRecord>();
     ArrayList<MessageRecord> receiveMessageRecords=new ArrayList<MessageRecord>();
    public ArrayList<CallRecord> getCallingInCityRecords() {
        return callingInCityRecords;
    }
    public void addCallingInCityRecords (CallRecord callRecord)
    {
        callingInCityRecords.add(callRecord);
    }
    public ArrayList<CallRecord> getCallingInProvinceRecords() {
        return callingInProvinceRecords;
    }
    public void addCallingInProvinceRecords (CallRecord callRecord)
    {
        callingInProvinceRecords .add(callRecord);
    }
    
    public ArrayList<CallRecord> getCallingInLandRecords() {
        return callingInLandRecords;
    }
    public void addCallingInLandRecords (CallRecord callRecord)
    {
        callingInLandRecords.add(callRecord);
    }
    public ArrayList<CallRecord> getAnswerInCityRecords() {
        return answerInCityRecords;
    }
    public void addAnswerInCityRecords (CallRecord answerRecord)
    {
        answerInCityRecords.add(answerRecord);
    }
    public ArrayList<CallRecord> getAnswerInProvinceRecords() {
        return answerInProvinceRecords;
    }
    public void addAnswerInProvinceRecords (CallRecord answerRecord)
    {
        answerInProvinceRecords.add(answerRecord);
    }
    public ArrayList<CallRecord> getAnswerInLandRecords() {
        return answerInLandRecords;
    }
    public void addAnswerInLandRecords (CallRecord answerRecord)
    {
        answerInLandRecords.add(answerRecord);
    }
    public ArrayList<MessageRecord> getSendMessageRecords() {
        return sendMessageRecords;
    }
    public void addSendMessageRecords (MessageRecord sendMessageRecord)
    {
        sendMessageRecords.add(sendMessageRecord);
    }
    public ArrayList<MessageRecord> getReceiveMessageRecords() {
        return receiveMessageRecords;
    }
    public void addReceiveMessageRecords (MessageRecord receiveMessageRecord)
    {
        receiveMessageRecords.add(receiveMessageRecord);
    }
}

本次为座机

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import java.util.Date;
public class Main {
    public static void main(String[] args) throws ParseException{
        SimpleDateFormat SimpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    ArrayList<User> Users=new ArrayList<User>();
    Scanner sc=new Scanner(System.in);
    String a=sc.nextLine();
    int m=0;
    while(true)
    {
        if(a.matches("u-0[0-9]{9,11} 0"))
        {
        Users.add(new User());
        int q=a.indexOf(' ');
        Users.get(m).number=a.substring(2,q);
        Users.get(m).chargeMode=new LandlinePhoneCharging();
        m++;
        }
        if(a.matches("u-1[0-9]{10} 1"))
        {
            Users.add(new User());
            int q=a.indexOf(' ');
            Users.get(m).number=a.substring(2,q);
            Users.get(m).chargeMode=new iPhoneCharging();
            m++;
        }
         a=sc.nextLine();
         try {
         if(a.charAt(0)=='t'||a.equals("end"))
             break;
             }
         catch(Exception e){ 
             // 在错误发生时怎么处理
            } 
    }
    int y;
    int j;
    
    for(y=0;y<Users.size();y++)
    {
        for(j=y+1;j<Users.size();j++)
        {
            if(Users.get(y).number.equals(Users.get(j).number))
            {
                Users.remove(j);
            }
        }    
    }
    Collections.sort(Users);
    String c=a;
      while(!c.equals("end"))
    { 
        int n=0;
        int l=Users.size();
 if(c.matches("t-0[\\d]{10,11} 0[\\d]{9,11} [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]) [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])"))
    //座机打座机
       {  n=0;
            while(n<l)
          {  
            
                try{ 
                     // 可能会导致错误的代码
                  int q=c.indexOf(' ');
            if(Users.get(n).number.equals(c.substring(2,q)))
            {
                
                if(User.numaeral(c.substring(q+2,q+5))==0)
                {
                    q=c.indexOf(' ',q+1);
                    int w=q;
                    q=c.indexOf(' ',q+1);
                    q=c.indexOf(' ',q+1);
                    if(check(c.substring(w+1, q))&&check(c.substring(q+1)))
                {
                    Users.get(n).userRecords.callingInCityRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingInCityRecords.size();
Users.get(n).userRecords.callingInCityRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(w+1, q));
Users.get(n).userRecords.callingInCityRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(q+1));
                }
                }
                else if(User.numaeral(c.substring(q+2,q+5))==1)
                {
                    
                    q=c.indexOf(' ',q+1);
                    int w=q;
                    q=c.indexOf(' ',q+1);
                    q=c.indexOf(' ',q+1);
                    if(check(c.substring(w+1, q))&&check(c.substring(q+1)))
                    {
                    Users.get(n).userRecords.callingInProvinceRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingInProvinceRecords.size();
Users.get(n).userRecords.callingInProvinceRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(w+1, q));
Users.get(n).userRecords.callingInProvinceRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(q+1));
                    }    
                }
                else
                {
                    
                    q=c.indexOf(' ',q+1);
                    int w=q;
                    q=c.indexOf(' ',q+1);
                    q=c.indexOf(' ',q+1);
                    if(check(c.substring(w+1, q))&&check(c.substring(q+1)))
                    {
                    Users.get(n).userRecords.callingInLandRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingInLandRecords.size();
Users.get(n).userRecords.callingInLandRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(w+1, q));
Users.get(n).userRecords.callingInLandRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(q+1));
                }
                }
            }//寻找到指定用户结束后进行的操作结束
                }//try结束
                catch(Exception e){ 
                     // 在错误发生时怎么处理
                    } 
            n++;
         }//寻找配对用户结束
    }//座机打座机匹配操作结束
 if(c.matches("t-1[\\d]{10} 0[\\d]{2,3} 1[\\d]{10} 0[\\d]{2,3} [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]) [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])"))
        //手机打手机
   {
      
              int q=c.indexOf(' ');
            int r=c.indexOf(' ',q+1);
            int s=c.indexOf(' ',r+1);
            int t=c.indexOf(' ',s+1);
            int u=c.indexOf(' ',t+1);
            int v=c.indexOf(' ',u+1);
            int p=User.numaeral(c.substring(s+2,t));
            int jud=ifinrecord(c.substring(r+1,s),Users);
             n=ifinrecord(c.substring(2,q),Users);
  if(n!=-1&&check(c.substring(t+1,v))&&check(c.substring(v+1)))
              {
         
                  if(User.numaeral(c.substring(q+2,r))==0)//不漫游
                  {
                      
                   if(p==0)
                   {
                      Users.get(n).userRecords.callingInCityRecords.add(new CallRecord());
                      int le=Users.get(n).userRecords.callingInCityRecords.size();
                      Users.get(n).userRecords.callingInCityRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(t+1, v));
                      Users.get(n).userRecords.callingInCityRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(v+1));
                   }
                   else if(p==1) 
                   {
                      Users.get(n).userRecords.callingInProvinceRecords.add(new CallRecord());
                      int le=Users.get(n).userRecords.callingInProvinceRecords.size();
                      Users.get(n).userRecords.callingInProvinceRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(t+1, v));
                      Users.get(n).userRecords.callingInProvinceRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(v+1));
                   }
                   else
                   {
                      Users.get(n).userRecords.callingInLandRecords.add(new CallRecord());
                      int le=Users.get(n).userRecords.callingInLandRecords.size();
                      Users.get(n).userRecords.callingInLandRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(t+1, v));
                      Users.get(n).userRecords.callingInLandRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(v+1));
                  
                   }
                  }//不漫游结束
                  else if(User.numaeral(c.substring(q+2,r))==1)//省内漫游
                  {
                      Users.get(n).userRecords.callingoutCityRecords.add(new CallRecord());
                          int le=Users.get(n).userRecords.callingoutCityRecords.size();
                          Users.get(n).userRecords.callingoutCityRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(t+1, v));
                          Users.get(n).userRecords.callingoutCityRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(v+1)); 
                         
                  }//省内漫游结束
                  else//国内漫游
                  {
                           Users.get(n).userRecords.callingoutLandRecords.add(new CallRecord());
                           int le=Users.get(n).userRecords.callingoutLandRecords.size();
                           Users.get(n).userRecords.callingoutLandRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(t+1, v));
                           Users.get(n).userRecords.callingoutLandRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(v+1)); 
                  }//国内漫游结束
              }////寻找到指定拨号用户结束后进行的操作结束
  if(p==2&&jud!=-1&&check(c.substring(t+1,v))&&check(c.substring(v+1)))
     {    
    Users.get(jud).userRecords.answerRecords.add(new CallRecord());
    int    le=Users.get(jud).userRecords.answerRecords.size();
    Users.get(jud).userRecords.answerRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(t+1, v));
    Users.get(jud).userRecords.answerRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(v+1));
    }//寻找到指定接听用户后进行的操作结束
  }//手机打手机结束
if(c.matches("t-0[\\d]{9,11} 1[\\d]{10} 0[\\d]{2,3} [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]) [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])"))
    //座机打手机
 {
     int q=c.indexOf(' ');
        int r=c.indexOf(' ',q+1);
        int s=c.indexOf(' ',r+1);
        int t=c.indexOf(' ',s+1);
        int u=c.indexOf(' ',t+1);
        int p=User.numaeral(c.substring(r+2,s));
         n=ifinrecord(c.substring(2,q),Users);
         int jud=ifinrecord(c.substring(q+1,r),Users);
        if(n!=-1&&check(c.substring(s+1,u))&&check(c.substring(u+1)))
        {
            
            if(p==0)
            {
                Users.get(n).userRecords.callingInCityRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingInCityRecords.size();
                    Users.get(n).userRecords.callingInCityRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(s+1, u));
                    Users.get(n).userRecords.callingInCityRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(u+1)); 
            }
            else if(p==1)
            {
                Users.get(n).userRecords.callingInProvinceRecords.add(new CallRecord());
                int le=Users.get(n).userRecords.callingInProvinceRecords.size();
                Users.get(n).userRecords.callingInProvinceRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(s+1, u));
                Users.get(n).userRecords.callingInProvinceRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(u+1)); 
            }
            else
            {
                Users.get(n).userRecords.callingInLandRecords.add(new CallRecord());
                int le=Users.get(n).userRecords.callingInLandRecords.size();
                Users.get(n).userRecords.callingInLandRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(s+1, u));
                Users.get(n).userRecords.callingInLandRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(u+1)); 
            }
        }//寻找到指定拨号用户完成操作后结束
         if(p==2&&jud!=-1&&check(c.substring(s+1,u))&&check(c.substring(u+1)))
         {
            
        Users.get(jud).userRecords.answerRecords.add(new CallRecord());
        int    le=Users.get(jud).userRecords.answerRecords.size();
        Users.get(jud).userRecords.answerRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(s+1, u));
        Users.get(jud).userRecords.answerRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(u+1));
          }//寻找到指定接听用户后操作结束
 }//座机打手机结束
 if(c.matches("t-1[\\d]{10} 0[\\d]{2,3} 0[\\d]{9,11} [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]) [\\d]{4}.[\\d]{1,2}.[\\d]{1,2} ([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])"))
        //手机打座机
 {

     int q=c.indexOf(' ');
        int r=c.indexOf(' ',q+1);
        int s=c.indexOf(' ',r+1);
        int t=c.indexOf(' ',s+1);
        int u=c.indexOf(' ',t+1);
        int p=User.numaeral(c.substring(q+2,r));
         n=ifinrecord(c.substring(2,q),Users);
         if(n!=-1&&check(c.substring(s+1,u))&&check(c.substring(u+1)))
            {
                if(p==0)
                {
                    Users.get(n).userRecords.callingInCityRecords.add(new CallRecord());
                        int le=Users.get(n).userRecords.callingInCityRecords.size();
                        Users.get(n).userRecords.callingInCityRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(s+1, u));
                        Users.get(n).userRecords.callingInCityRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(u+1)); 
                }
                else if(p==1)
                {
                    Users.get(n).userRecords.callingoutCityRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingoutCityRecords.size();
                    Users.get(n).userRecords.callingoutCityRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(s+1, u));
                    Users.get(n).userRecords.callingoutCityRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(u+1)); 
                }
                else
                {
                    Users.get(n).userRecords.callingoutLandRecords.add(new CallRecord());
                    int le=Users.get(n).userRecords.callingoutLandRecords.size();
                    Users.get(n).userRecords.callingoutLandRecords.get(le-1).startTime=SimpleDateFormat.parse(c.substring(s+1, u));
                    Users.get(n).userRecords.callingoutLandRecords.get(le-1).endTime=SimpleDateFormat.parse(c.substring(u+1)); 
                
                }
            }
 }//手机打座机结束
        c=sc.nextLine();
    }//用户通话记录输入结束
    
    y=0;
    while(y<Users.size())
    {  
        System.out.printf("%s %.1f %.1f",Users.get(y).number,Users.get(y).calCost(),(100-Users.get(y).chargeMode.getMonthlyRent()-Users.get(y).calCost()));
        System.out.printf("\n");
        y++;    
    }
}
    private static int ifinrecord(String s,ArrayList<User> Users) {
        for(int i=0;i<Users.size();i++)
        {
            if(s.equals(Users.get(i).number))
                return i;
        }
        return -1;
    }
    static boolean check (String str) {
        SimpleDateFormat sd=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");//括号内为日期格式,y代表年份,M代表年份中的月份(为避免与小时中的分钟数m冲突,此处用M),d代表月份中的天数
        try {
            sd.setLenient(false);//此处指定日期/时间解析是否不严格,在true是不严格,false时为严格
            sd.parse(str);//从给定字符串的开始解析文本,以生成一个日期
        }
        catch (Exception e) {
            return false;
        }
        return true;
    }
}

abstract class CallChargeRule extends ChargeRule {
    SimpleDateFormat SimpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    public abstract double calCost (UserRecords  userRecords);
}
class CallRecord extends CommunicationRecord{
    Date startTime;
    Date endTime;
    String callingAddressAreaCode;
    String answerAddressAreaCode;
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public String getCallingAddressAreaCode() {
        return callingAddressAreaCode;
    }
    public void setCallingAddressAreaCode(String callingAddressAreaCode) {
        this.callingAddressAreaCode = callingAddressAreaCode;
    }
    public String getAnswerAddressAreaCode() {
        return answerAddressAreaCode;
    }
    public void setAnswerAddressAreaCode(String answerAddressAreaCode) {
        this.answerAddressAreaCode = answerAddressAreaCode;
    }
}
abstract class chargeMode {
    ArrayList<ChargeRule> chargeRules = new ArrayList<>();
    public  abstract double calCost (UserRecords userRecords);
    public  abstract double  getMonthlyRent ();
    public ArrayList<ChargeRule> getChargeRules() {
        return chargeRules;
    }
    public void setChargeRules(ArrayList<ChargeRule> chargeRules) {
        this.chargeRules = chargeRules;
    }
}
abstract class ChargeRule {
    public abstract double calCost (UserRecords userRecords);
}
abstract class CommunicationRecord {
    String callingNumber;
    String answerNumber;
    public String getCallingNumber() {
        return callingNumber;
    }
    public void setCallingNumber(String callingNumber) {
        this.callingNumber = callingNumber;
    }
    public String getAnswerNumber() {
        return answerNumber;
    }
    public void setAnswerNumber(String answerNumber) {
        this.answerNumber = answerNumber;
    }
}
class iPhoneCharging extends chargeMode {

    @Override
    public double calCost(UserRecords userRecords) {
        chargeRules.add(new iPhoneRule());
        return chargeRules.get(0).calCost(userRecords);
    }

    @Override
    public double getMonthlyRent() {
        // TODO Auto-generated method stub
        return 15;
    }

}
class iPhoneRule extends ChargeRule {

    @Override
    public double calCost(UserRecords userRecords) {
        int i=0;
        double s=0;
        double m=0;
        while(i<userRecords.callingInCityRecords.size())
        {
            try {
        long time1=userRecords.callingInCityRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInCityRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.1+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        i=0;
        while(i<userRecords.callingInProvinceRecords.size())
        {
            try {
        long time1=userRecords.callingInProvinceRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInProvinceRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.2+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        i=0;
        while(i<userRecords.callingInLandRecords.size())
        {
            try {
        long time1=userRecords.callingInLandRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInLandRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.3+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        i=0;
        while(i<userRecords.answerRecords.size())
        {
            try {
        long time1=userRecords.answerRecords.get(i).startTime.getTime();
        long time2=userRecords.answerRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.3+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        i=0;
        while(i<userRecords.callingoutCityRecords.size())
        {
            try {
        long time1=userRecords.callingoutCityRecords.get(i).startTime.getTime();
        long time2=userRecords.callingoutCityRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.3+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        i=0;
        while(i<userRecords.callingoutLandRecords.size())
        {
            try {
        long time1=userRecords.callingoutLandRecords.get(i).startTime.getTime();
        long time2=userRecords.callingoutLandRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.6+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        return m;
    }

}
class LandlinePhoneCharging extends chargeMode {

    @Override
    public double calCost(UserRecords userRecords) {
         chargeRules.add(new LandPhoneInCityRule());
         chargeRules.add(new LandPhoneInProvinceRule());
         chargeRules.add(new LandPhoneInlandRule());
return chargeRules.get(0).calCost(userRecords)+chargeRules.get(1).calCost(userRecords)+chargeRules.get(2).calCost(userRecords);
    }

    @Override
    public double getMonthlyRent() {
        // TODO Auto-generated method stub
        return 20;
    }

}
class LandPhoneInCityRule extends CallChargeRule {

    
    @Override
    public double calCost(UserRecords userRecords) {
        int i=0;
        double s=0;
        double m=0;
        while(i<userRecords.callingInCityRecords.size())
        {
            try {
        long time1=userRecords.callingInCityRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInCityRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.1+m;
            }
            catch(Exception e){ 
                 i++;
                } 
        }
        return m;
    }
}
class LandPhoneInlandRule extends CallChargeRule {

    @Override
    public double calCost(UserRecords userRecords) {
        int i=0;
        double s=0;
        double m=0;
        while(i<userRecords.callingInLandRecords.size())
        {
            try {
        long time1=userRecords.callingInLandRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInLandRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
          m=m+Math.ceil(s/1000/60)*0.6;
        }
            catch(Exception e){ 
                 i++;
                } 
        }
        return m;
    }
    }

class LandPhoneInProvinceRule extends CallChargeRule {

    @Override
    public double calCost(UserRecords  userRecords) {
        int i=0;
        double s=0;
        double m=0;
        while(i<userRecords.callingInProvinceRecords.size())
        {
            try {
        long time1=userRecords.callingInProvinceRecords.get(i).startTime.getTime();
        long time2=userRecords.callingInProvinceRecords.get(i).endTime.getTime();
        long time=(time2-time1);
        i++;
         s=(double)time;
         m=Math.ceil(s/1000/60)*0.3+m;
        }
            catch(Exception e){ 
                i++;
                } 
        }
        return m ;
    }

}
class User implements Comparable<Object> {
    UserRecords userRecords =new UserRecords();
    double balance=100;
    chargeMode chargeMode;
    String number;
    public UserRecords getUserRecords() {
        return userRecords;
    }
    public void setUserRecords(UserRecords userRecords) {
        this.userRecords = userRecords;
    }
    public double getBalance() {
        return balance;
    }
    public chargeMode getChargeMode() {
        return chargeMode;
    }
    public void setChargeMode(chargeMode chargeMode) {
        this.chargeMode = chargeMode;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public double calBalance () {
        return balance;    
    }
   public double calCost () {
       return chargeMode.calCost(userRecords);
    }
public static int numaeral(String number) {
    if(Integer.parseInt(number)==791)
        return 0;
    else if(Integer.parseInt(number)>=790&&Integer.parseInt(number)<=799||Integer.parseInt(number)==701)
    return 1;
    else
        return 2;
}
public static int numaeral(String number,String number1) {
    if(Integer.parseInt(number)==791)
        return 0;
    else if(Integer.parseInt(number)>=790&&Integer.parseInt(number)<=799||Integer.parseInt(number)==701)
    return 1;
    else
        return 2;
}
@Override
public int compareTo(Object o) {
    User user = (User) o;
    return this.number.compareTo(user.number);
}
}

class UserRecords {
     ArrayList<CallRecord> callingInCityRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> callingInProvinceRecords =new ArrayList<CallRecord>();
     ArrayList<CallRecord> callingInLandRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> callingoutCityRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> callingoutLandRecords=new ArrayList<CallRecord>();
        ArrayList<CallRecord> answerRecords=new ArrayList<CallRecord>();
    ArrayList<CallRecord> answerInCityRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> answerInProvinceRecords=new ArrayList<CallRecord>();
     ArrayList<CallRecord> answerInLandRecords=new ArrayList<CallRecord>();
     ArrayList<MessageRecord> sendMessageRecords=new ArrayList<MessageRecord>();
     ArrayList<MessageRecord> receiveMessageRecords=new ArrayList<MessageRecord>();
    public ArrayList<CallRecord> getCallingInCityRecords() {
        return callingInCityRecords;
    }
    public void addCallingInCityRecords (CallRecord callRecord)
    {
        callingInCityRecords.add(callRecord);
    }
    public ArrayList<CallRecord> getCallingInProvinceRecords() {
        return callingInProvinceRecords;
    }
    public void addCallingInProvinceRecords (CallRecord callRecord)
    {
        callingInProvinceRecords .add(callRecord);
    }
    
    public ArrayList<CallRecord> getCallingInLandRecords() {
        return callingInLandRecords;
    }
    public void addCallingInLandRecords (CallRecord callRecord)
    {
        callingInLandRecords.add(callRecord);
    }
    public ArrayList<CallRecord> getAnswerInCityRecords() {
        return answerInCityRecords;
    }
    public void addAnswerInCityRecords (CallRecord answerRecord)
    {
        answerInCityRecords.add(answerRecord);
    }
    public ArrayList<CallRecord> getAnswerInProvinceRecords() {
        return answerInProvinceRecords;
    }
    public void addAnswerInProvinceRecords (CallRecord answerRecord)
    {
        answerInProvinceRecords.add(answerRecord);
    }
    public ArrayList<CallRecord> getAnswerInLandRecords() {
        return answerInLandRecords;
    }
    public void addAnswerInLandRecords (CallRecord answerRecord)
    {
        answerInLandRecords.add(answerRecord);
    }
    public ArrayList<MessageRecord> getSendMessageRecords() {
        return sendMessageRecords;
    }
    public void addSendMessageRecords (MessageRecord sendMessageRecord)
    {
        sendMessageRecords.add(sendMessageRecord);
    }
    public ArrayList<MessageRecord> getReceiveMessageRecords() {
        return receiveMessageRecords;
    }
    public void addReceiveMessageRecords (MessageRecord receiveMessageRecord)
    {
        receiveMessageRecords.add(receiveMessageRecord);
    }
}
 class  MessageRecord extends CommunicationRecord{
 String message;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}
}

本次新增手机

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws ParseException{
        SimpleDateFormat SimpleDateFormat=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    ArrayList<User> Users=new ArrayList<User>();
    Scanner sc=new Scanner(System.in);
    String a=sc.nextLine();
    int m=0;
    while(true)
    {
        
        if(a.matches("u-1[0-9]{10} 3"))
        {
            Users.add(new User());
            int q=a.indexOf(' ');
            Users.get(m).number=a.substring(2,q);
            Users.get(m).chargeMode=new mphonecharging();
            m++;
        }
         a=sc.nextLine();
         try {
         if(a.charAt(0)=='m'||a.equals("end"))
             break;
             }
         catch(Exception e){ 
             // 在错误发生时怎么处理
            } 
    }
    int y;
    int j;
    
    for(y=0;y<Users.size();y++)
    {
        for(j=y+1;j<Users.size();j++)
        {
            if(Users.get(y).number.equals(Users.get(j).number))
            {
                Users.remove(j);
            }
        }    
    }
    Collections.sort(Users);
    String c=a;
          while(!c.equals("end"))
    { 
              int n=0;
        int l=Users.size();
              if(c.matches("m-1[\\d]{10} 1[\\d]{10} [a-zA-Z\\d ,.]+"))
 {
        int q=c.indexOf(' ');
        int r=c.indexOf(' ',q+1);
        n=ifinrecord(c.substring(2,q),Users);
         if(n!=-1)
         {
             Users.get(n).userRecords.sendMessageRecords.add(new MessageRecord());
             int le=Users.get(n).userRecords.sendMessageRecords.size();
             Users.get(n).userRecords.sendMessageRecords.get(le-1).message=c.substring(r+1);     
         }
 }
        c=sc.nextLine();
    }//用户通话记录输入结束
    
    y=0;
    while(y<Users.size())
    {  
        System.out.printf("%s %.1f %.1f",Users.get(y).number,Users.get(y).calCost(),(100-Users.get(y).chargeMode.getMonthlyRent()-Users.get(y).calCost()));
        System.out.printf("\n");
        y++;    
    }
}
    private static int ifinrecord(String s,ArrayList<User> Users) {
        for(int i=0;i<Users.size();i++)
        {
            if(s.equals(Users.get(i).number))
                return i;
        }
        return -1;
    }
    static boolean check (String str) {
        SimpleDateFormat sd=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");//括号内为日期格式,y代表年份,M代表年份中的月份(为避免与小时中的分钟数m冲突,此处用M),d代表月份中的天数
        try {
            sd.setLenient(false);//此处指定日期/时间解析是否不严格,在true是不严格,false时为严格
            sd.parse(str);//从给定字符串的开始解析文本,以生成一个日期
        }
        catch (Exception e) {
            return false;
        }
        return true;
    }
}
    abstract class chargeMode {
    ArrayList<ChargeRule> chargeRules = new ArrayList<>();
    public  abstract double calCost (UserRecords userRecords);
    public  abstract double  getMonthlyRent ();
    public ArrayList<ChargeRule> getChargeRules() {
        return chargeRules;
    }
    public void setChargeRules(ArrayList<ChargeRule> chargeRules) {
        this.chargeRules = chargeRules;
    }
}
 abstract class ChargeRule {
    public abstract double calCost (UserRecords userRecords);
}
 abstract class CommunicationRecord {
    String callingNumber;
    String answerNumber;
    public String getCallingNumber() {
        return callingNumber;
    }
    public void setCallingNumber(String callingNumber) {
        this.callingNumber = callingNumber;
    }
    public String getAnswerNumber() {
        return answerNumber;
    }
    public void setAnswerNumber(String answerNumber) {
        this.answerNumber = answerNumber;
    }
}
     class  MessageRecord extends CommunicationRecord{
 String message;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}
}
class mphonecharging extends chargeMode {

    @Override
    public double calCost(UserRecords userRecords) {
         chargeRules.add(new mphonerule());
        return chargeRules.get(0).calCost(userRecords);
    }

    @Override
    public double getMonthlyRent() {
        // TODO Auto-generated method stub
        return 0;
    }

}
class mphonerule extends ChargeRule {
    
    @Override
    public double calCost(UserRecords userRecords) {
        int i=0;
        double s=0;
        while(i<userRecords.sendMessageRecords.size())
        {
            float a=(float)userRecords.sendMessageRecords.get(i).message.length()/10;
            s=s+Math.ceil(a);
            i++;
        }
        if(s<=3)
        return s*0.1;
        else if(s>3&&s<=5)
            return (s-3)*0.2+0.3;
        else
            return (s-5)*0.3+0.3+0.4;
    }

}

 class User implements Comparable<Object> {
    UserRecords userRecords =new UserRecords();
    double balance=100;
    chargeMode chargeMode;
    String number;
    public UserRecords getUserRecords() {
        return userRecords;
    }
    public void setUserRecords(UserRecords userRecords) {
        this.userRecords = userRecords;
    }
    public double getBalance() {
        return balance;
    }
    public chargeMode getChargeMode() {
        return chargeMode;
    }
    public void setChargeMode(chargeMode chargeMode) {
        this.chargeMode = chargeMode;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public double calBalance () {
        return balance;    
    }
   public double calCost () {
       return chargeMode.calCost(userRecords);
    }
public static int numaeral(String number) {
    if(Integer.parseInt(number)==791)
        return 0;
    else if(Integer.parseInt(number)>=790&&Integer.parseInt(number)<=799||Integer.parseInt(number)==701)
    return 1;
    else
        return 2;
}
public static int numaeral(String number,String number1) {
    if(Integer.parseInt(number)==791)
        return 0;
    else if(Integer.parseInt(number)>=790&&Integer.parseInt(number)<=799||Integer.parseInt(number)==701)
    return 1;
    else
        return 2;
}
@Override
public int compareTo(Object o) {
    User user = (User) o;
    return this.number.compareTo(user.number);
}
}
class UserRecords {
     ArrayList<MessageRecord> sendMessageRecords=new ArrayList<MessageRecord>();
     ArrayList<MessageRecord> receiveMessageRecords=new ArrayList<MessageRecord>();
    public ArrayList<MessageRecord> getSendMessageRecords() {
        return sendMessageRecords;
    }
    public void addSendMessageRecords (MessageRecord sendMessageRecord)
    {
        sendMessageRecords.add(sendMessageRecord);
    }
    public ArrayList<MessageRecord> getReceiveMessageRecords() {
        return receiveMessageRecords;
    }
    public void addReceiveMessageRecords (MessageRecord receiveMessageRecord)
    {
        receiveMessageRecords.add(receiveMessageRecord);
    }
}

本次新增短信

3.踩坑心得

第一次作业中的多种用户输入的情况许多过不去,后来才发现是我用户输入出了差错

    while(true)
    {
        if(a.matches("u-0[0-9]{9,11} 0"))
        {
        Users.add(new User());
        int q=a.indexOf(' ');
        Users.get(m).number=a.substring(2,q);
        Users.get(m).chargeMode=new LandlinePhoneCharging();
        m++;
        }
        if(a.matches("u-1[0-9]{10} 1"))
        {
            Users.add(new User());
            int q=a.indexOf(' ');
            Users.get(m).number=a.substring(2,q);
            Users.get(m).chargeMode=new iPhoneCharging();
            m++;
        }
        if(a.matches("u-1[0-9]{10} 3"))
        {
            Users.add(new User());
            int q=a.indexOf(' ');
            Users.get(m).number=a.substring(2,q);
            Users.get(m).chargeMode=new mphonecharging();
            m++;
        }

 

4.改进建议

对题目分工要求必须明确,各个类实现各个相应的功能,使代码可读性增强,对继承与多态的理解尚且不够,还需努力.

5.总结

经过这三周的学习,我基本实现了一个对Java这门语言的深入认识。对数据类型种类基本掌握,对字符串类中的各种方法基本掌握。另外面向对象的语言自然必须掌握类与对象的关系.对数据的审查方面自学了正则表达式对数据精准把控。但当我面对一个题目中有多个要求需要多个方法实现题目要求时,很难做到面面俱到。面对大型题目时难以沉着对待,冷静分析数据.

posted @ 2022-06-12 00:01  萤勾  阅读(63)  评论(0)    收藏  举报