作业内容:搭建一个基于java的比赛数据库,可以储存和输入选手个人信息并记录于文件内
该作业内容较为简单,属于巩固基础知识的类型(希望不要被打脸)
主要用到5个文件:Name,Competitor,ComprtitorList, Manager以及最终的Main方法
本次小节先对Name做一归纳:
package sample;
public class Name {
private String firstName;
private String middleName;
private String lastName;
//constructor to create object with a first and last name
public Name(String fName, String lName) {
firstName = fName;
middleName = "";
lastName = lName;
}
public Name(String fName, String mName, String lName) {
firstName = fName;
middleName = mName;
lastName = lName;
}
public Name (String fullName) {
int spacePos1 = fullName.indexOf(' ');
firstName = fullName.substring(0, spacePos1);
int spacePos2 = fullName.lastIndexOf(' ');
if (spacePos1 == spacePos2)
middleName = "";
else
middleName = fullName.substring(spacePos1+1, spacePos2);
lastName = fullName.substring(spacePos2 + 1);
}
public String getFirstName() {return firstName; }
public String getLastName() {return lastName; }
public String getMiddleName(){
if (middleName!=""){
return middleName;
}
else return "";
}
public void setLastName(String ln) {
lastName = ln;
}
public String getFirstAndLastName() {
return firstName + " " + lastName;
}
public String getLastCommaFirst() {
return lastName + ", "+ firstName;
}
public String getFullName() {
String result = firstName + " ";
if (!middleName.equals("")) {
result += middleName + " ";
}
result += lastName;
return result;
}
}
个人理论不甚过关,如有错误欢迎指出哈
Name创建一个新的class,针对不同输入的String字符串均有对应的方法,目的在于获取整段字符串中的姓和名,并在需要的时候分别返回值。为了针对不同形式的输入方法,这里同时对姓,中间名,名的输入分别写出的对应方法,实际测试的时候只用到了fullname的输入方法。
根据个人的编程习惯,此处添加了setName等类型的方法,用于可能需要的修改姓名的情况,此次作业中并未出现,也可不加。
此处主要重难点在于对输入的全名字符串,需要先识别其中的分隔符(空格键),再判断名字中是否含有前,中,后名共三节,如果有则将其分别表示。
这里通过标记第一个空格键的位置,与最后一个做对比,即可知道全名中是否只有一个空格键,即是否只有姓,名(no middle name)
通常情况下,姓,中间名和名分别有一个。但是当中间名有多个的时候,这个方法只能获取整段中间名,无法再次使用空格键对其进行进一步的划分。当然,在本次的作业中,这个方法已经很是够用了。