import java.util.Scanner;
public class ArrayOfStringsDemo {
public static void main(String[] args) {
final int n = 3; //編寫壹個int n,n表示***有多少個姓名
Name[] testArray = new Name[n];//創建壹個class為Name,size為n,名為testArray的array
int count = 0;
//輸入和讀取上面格式的String,壹***有n個姓名
while(count < n){
System.out.println("Please input name, use / to separate forename and surnmae, use # to end the name input");
Scanner scanner = new Scanner(System.in);
String nameStr = scanner.nextLine().trim();
if(nameStr.matches("\\w+/\\w+#")){//forename後面用/,姓結束用#。
String[] names = nameStr.split("/");
//對於每壹對兒成功輸入的String,建立壹個Name object,讓這個成為testArray的下壹個元素
testArray[count++] = new Name(names[0], names[1].substring(0, names[1].length() - 1));
}else{
System.out.println("Wrong name format, please input again!");
}
}
Name targetName = new Name("David", "Smith");//測試名字1,在array中
Name targetName2 = new Name("Name", "Chinese");//測試不在array中的名字
int index1 = findName(testArray, targetName);
if(index1 == 1){
System.out.println("Smith/David can be found in the array");
}else{
System.out.println("Smith/David is not int the array");
}
int index2 = findName(testArray, targetName2);
if(index2 == 1){
System.out.println("Name/Chinese can be found in the array");
}else{
System.out.println("Name/Chinese is not int the array");
}
}
//創建壹個名為findName的static method,包含兩個arguments,第壹個是壹個type Name的array,
//第二個是壹個name。當array裏的forename和surname都和第二個name相同的時候,
//findName returns第壹個array的index。如果不同,return -1
private static int findName(Name[] testArray, Name targetName) {
for(int i = 0; i < testArray.length; i++){
Name name = testArray[i];
if(name.getForename().equals(targetName.getForename()) && name.getSurname().equals(targetName.getSurname())){
return i;//完全相同,返回index
}
}
return -1;//找不到返回-1
}
}
class Name{//Name類
private String forename;
private String surname;
public Name(String forename, String surname){
this.forename = forename;
this.surname = surname;
}
public String getForename() {
return forename;
}
public String getSurname() {
return surname;
}
}
--------------測試
Please input name, use / to separate forename and surnmae, use # to end the name input
assdfkl;/asdkfsa;#
Wrong name format, please input again!
Please input name, use / to separate forename and surnmae, use # to end the name input
abcdef/1234#
Please input name, use / to separate forename and surnmae, use # to end the name input
David/Smith#
Please input name, use / to separate forename and surnmae, use # to end the name input
Name/England#
Smith/David can be found in the array
Name/Chinese is not int the array