Вывод как надо, все красиво, даже немного больше сделал, чтобы норм было, что б ексепшены не сыпались, короче расстарался, но так лень переделывать сухо под задачу без всех этих красивушек, или всё-таки придется?
package com.javarush.task.task17.task1710;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/*
CRUD
*/
public class Solution {
public static List<Person> allPeople = new ArrayList<Person>();
private static boolean exit;
static {
allPeople.add(Person.createMale("Иванов Иван", new Date())); //сегодня родился id=0
allPeople.add(Person.createMale("Петров Петр", new Date())); //сегодня родился id=1
}
public static void main(String[] args) {
exit = false;
//while(!exit){
workWithData();
//}
}
private static void addPerson(CommandParser command){
if (command.isSex()){
allPeople.add(Person.createMale(command.getName(),command.getBd()));
} else {allPeople.add(Person.createFemale(command.getName(), command.getBd()));}
System.out.println(allPeople.size()-1);
}
private static void updatePerson (CommandParser command) {
try {
Person forUpdate = lookUp(command.getId());
forUpdate.setBirthDay(command.getBd());
forUpdate.setName(command.getName());
forUpdate.setSex(command.isSex() ? Sex.MALE : Sex.FEMALE);
} catch (PersonInputException pie){
System.out.println(pie.getMessage());
}
}
private static void removePerson (int id){
try{
allPeople.get(id).setSex(null);
allPeople.get(id).setName(null);
allPeople.get(id).setBirthDay(null);
}catch (IndexOutOfBoundsException ioob){
ioob.printStackTrace();
}
}
private static void showPerson (int id){
try{
System.out.println(allPeople.get(id));
}catch (IndexOutOfBoundsException ioob){
ioob.printStackTrace();
}
}
private static Person lookUp (int id) throws PersonInputException {
for (int i = 0; i < allPeople.size(); i++){
if (id == i) return allPeople.get(i);
}
throw new PersonInputException("Incorrect ID");
}
private static void workWithData() {
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
CommandParser command = null;
try{
try{
String comm = buff.readLine();
if (comm.equals("stop")) {
exit = true;
return;
}
if (comm.equals("get count")) {
System.out.println(allPeople.size());
return;
}
if (comm.equals("show all")) {
for (Person pers:allPeople){
System.out.println(pers);
}
return;
}
command = new CommandParser(comm);
}catch(PersonInputException pie){
System.out.println(pie.getMessage());
}
}catch(Exception e){
e.printStackTrace();
}
try{
switch(command.getParam()){
case "-c":
addPerson(command);
break;
case "-u":
updatePerson(command);
break;
case "-i":
showPerson(command.getId());
break;
case "-d":
removePerson(command.getId());
break;
}
}catch(NullPointerException nullE){
try{
throw new PersonInputException("no command");
} catch(PersonInputException e){
System.out.println(e.getMessage());
}
}
}
}