Не могу понять, почему при таком коде теряется первый кот. Потом все работает нормально
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String name = reader.readLine();

    while (!(name = reader.readLine()).equals("")) {
                    Cat cat = CatFactory.getCatByKey(name);
                    System.out.println(cat.toString());
                }
пришлось костылями с ифами делать:
while (true) {
          String name = reader.readLine();
            if (!name.equals("")){

                Cat cat = CatFactory.getCatByKey(name);
                System.out.println(cat.toString());
            }
            else break;


        }