Как получить пользовательский ввод и сохранить его в HashMap и создать два ключа отдельно для распечатки? - PullRequest
2 голосов
/ 06 июля 2019

Я только начал изучать HashMaps и могу распечатать их, но у меня возникают проблемы с выяснением, как получить userInput для обоих значений, сохранить их и затем распечатать.

Или я смотрю на эту проблему неправильно?

System.out.println("Let us know about your pets!");     
Map<String, String> pets = new HashMap<>();

String userInput; 
String name;
String type;        
int numberOfPets = 0; 
boolean valid = true; 

try (Scanner scnr = new Scanner(System.in)) {
   do { 
      System.out.println("Enter a name: ");
      name = userInput.put(scnr.nextLine());

      System.out.println("What type of animal is " + (name));
      type = userInput.put(scnr.nextLine());

      System.out.println("Would you like to enter another? (y/n) ");

      numberOfPets++; 

    } while (scnr.next().equalsIgnoreCase("y"));

}

System.out.println("You entered" + number of pets +"pets.");
for (String key : pets.keySet()) {
    System.out.println(key + " is a " + pets.get(key));
}

Я хочу, чтобы результат показывал:

Введите имя: {Пользователь входит в Eustance}

Какой тип животного Eustance:

{Пользователь вводит дракона}

Хотите ввести еще одного питомца?

{Да} Введите

имя: {Пользователь вводит Reepicheep}

Какой тип животного является Reepicheep:

{Пользователь вводит мышь}

Хотели бы вы ввести другого питомца?

{Нет}

Вы ввели 2 домашних животных.

Введите одно из имен домашних животных (или введите END для выхода): {Пользователь вводит Reepicheep} Reepicheep - мышь.

Ответы [ 2 ]

2 голосов
/ 06 июля 2019

Вам нужно изменить свой код, чтобы сохранить имя и ввести свой HashMap, как показано ниже, чтобы впоследствии его можно было извлечь, просто используя pets.get(...)

try (Scanner scnr = new Scanner(System.in)) {
    do {
        System.out.println("Enter a name: ");
        name = scnr.nextLine();

        System.out.println("What type of animal is " + (name));
        type = scnr.nextLine();

        // change made here 
        pets.put(name, type);

        System.out.println("Would you like to enter another? (y/n) ");

        numberOfPets++;

      // here as well coz scanner was skipping the input
    } while (scnr.nextLine().equalsIgnoreCase("y")); 

}
1 голос
/ 06 июля 2019

У вас есть операция «чтения»:

pets.get(key)

Вам просто нужна операция «записи» (во время цикла ввода):

pets.put(key, value)

Для получения полной информации, возьмитепосмотрите на JavaDocs для Map, например:

https://docs.oracle.com/javase/8/docs/api/java/util/Map.html

Есть все виды вещей, которые вы можете сделать с Map!

...