作业总结3
第7次PTA作业
这次的作业还是点菜程序,相较于前几次,这次的作业加的要求不多,也较为简单
对于这个要求,首先要添加口味类型和对于桌号添加电话号码,这个就要重新写我们的正则表达式规则,又因为它有了客户的要求,所以我们可以添加一个客户类用于记录客户点了哪些菜。
1 class Guest{ 2 String name; 3 String phone; 4 int bill = 0; 5 } 6 class Ledger{ 7 Guest[] guests = new Guest[1]; 8 9 void addGuest(Guest guest) { 10 if(searchGuest(guest.name) == null) { 11 Guest[] temGuests = new Guest[guests.length +1]; 12 for(int i=1;i<guests.length;i++) { 13 temGuests[i] = guests[i]; 14 } 15 temGuests[temGuests.length -1] = guest; 16 guests = temGuests; 17 }//没有该客户 18 else { 19 for(int i=1;i<guests.length;i++) { 20 if(guests[i].name.matches(guest.name)) { 21 guests[i].bill = guests[i].bill + guest.bill; 22 } 23 } 24 } 25 } 26 public void show() { 27 for(int i=1;i<guests.length-1;i++) { 28 for(int j=i;j<guests.length-1;j++) { 29 if(guests[j].name.compareToIgnoreCase(guests[j+1].name) > 0) { 30 Guest guest; 31 guest = guests[j]; 32 guests[j] = guests[j+1]; 33 guests[j+1] = guest; 34 }//j在后面 35 } 36 } 37 for(int i=1;i<guests.length;i++) { 38 if(i == guests.length-1) { 39 System.out.print(guests[i].name +" "+ guests[i].phone +" "+ guests[i].bill); 40 } 41 else { 42 System.out.println(guests[i].name +" "+ guests[i].phone +" "+ guests[i].bill); 43 } 44 } 45 } 46 Guest searchGuest(String name) { 47 for(int i=1;i<guests.length;i++) { 48 if(name.matches(guests[i].name)) { 49 return guests[i]; 50 } 51 } 52 return null; 53 } 54 }
第8次PTA
这次的作业新开了一个类型对于课程的统计。首先分析下这个题目
首先我们要写好框架,构建好类与类之间的关系
一个学生可以有多个选课,所以CourseSelected以ArrayList作为student的一个属性。
然后是正则表达式,这些正则表达式要能够正确匹配读取的内容。
1 String regexStudentInformation = "^[0-9]{8} \\S{1,10} \\S{1,10} .*$"; 2 String regexCourseInformation = "^\\S{1,10} (必修|选修) (考试|考察)$"; 3 //课程名称+英文空格+课程性质+英文空格+考核方式 4 String regexElectiveGrade = "^[0-9]{8} \\S{1,10} \\S{1,10}( (\\d|[1-9]\\d|100)){1,2}$"; 5 //学号+英文空格+姓名+英文空格+课程名称+英文空格+平时成绩+英文空格+期末成绩 6 String regexCompulsoryGrade = "^[0-9]{8} \\S{1,10} \\S{1,10}( (\\d|[1-9]\\d|100)){2}$"; 7 String regexEND = "end"; 8 9 String regexNumberModeErr = "^[0-9]{8} \\S{1,10} \\S{1,10} (\\d|[1-9]\\d|100)$"; 10 //如果解析某个成绩信息时,输入的成绩数量和课程的考核方式不匹配,输出:学号+英文空格+姓名+英文空格+": access mode mismatch" 11 //java 必修 考试 12 //20201103 张三 java 20 13 String regexTypeModeErr = "^\\S{1,10} 必修 考察$"; 14 //如果解析某个课程信息时,输入的课程性质和课程的考核方式不匹配,输出:课程名称+" : course type & access mode mismatch" 15 //java 必修 考察
然后通过这两句对输入的读取与划分。
stringLine = in.nextLine();
arrayLine = stringLine.split(" ");