What is wrong? When I'm debugging it I got the correct output for -c -u -i -d arguments. Can anyone help?
package pl.codegym.task.task17.task1710;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/*
CRUD
*/
public class Solution {
public static List<Person> allPeople = new ArrayList<>();
static {
allPeople.add(Person.createMale("Donald Chump", new Date())); // id=0
allPeople.add(Person.createMale("Larry Gates", new Date())); // id=1
}
public static void main(String[] args) throws IOException, ParseException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String input = reader.readLine();
String[] inputArray = input.split("\"?( |$)(?=(([^\"]*\"){2})*[^\"]*$)\"?");
String parameter = inputArray[0];
switch (parameter) {
case "-c":
addPerson(inputArray);
break;
case "-u":
updatePerson(inputArray);
break;
case "-d":
removePerson(inputArray);
case "-i":
getPersonInfo(inputArray);
}
}
public static void addPerson(String[] args) throws ParseException {
String name = args[1];
String sex = args[2];
String data = args[3];
Date date = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH).parse(data);
switch (sex) {
case "f":
allPeople.add(Person.createFemale(name, date));
break;
case "m":
allPeople.add(Person.createMale(name, date));
break;
default:
System.out.println("Incorrect argument");
}
System.out.println(allPeople.size() - 1);
}
public static void updatePerson(String[] args) throws ParseException {
int id = Integer.parseInt(args[1]);
String name = args[2];
String sex = args[3];
Date date = new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH).parse(args[4]);
allPeople.get(id).setName(name);
switch (sex) {
case "f":
allPeople.get(id).setSex(Sex.FEMALE);
break;
case "m":
allPeople.get(id).setSex(Sex.MALE);
break;
default:
System.out.println("Incorrect argument");
}
allPeople.get(id).setBirthDate(date);
}
public static void removePerson(String[] args) {
int id = Integer.parseInt(args[1]);
allPeople.get(id).setName(null);
allPeople.get(id).setBirthDate(null);
allPeople.get(id).setSex(null);
}
public static void getPersonInfo(String[] args) {
int id = Integer.parseInt(args[1]);
String sex = "";
Person person = allPeople.get(Integer.parseInt(args[1]));
DateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH);
if (allPeople.get(id).getSex() == Sex.MALE) {
sex = "m";
}else if (allPeople.get(id).getSex() == Sex.FEMALE) {
sex = "f";
}
System.out.println(person.getName() + " " + sex + " " + dateFormat.format(person.getBirthDate()));
}
}