Метод цикла Hashmap не добавляет значение для элемента правильно - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь написать код, в котором одновременно выполняются 3 фрагмента в основной деятельности.

Fragment 1: Asks the user a question
Fragment 2: Click an image of a dog 
Fragment 3: Click a rating (using rating bar) then save result (using button) according to dog image

После 4 вопросов появляется гистограмма, показывающая общий рейтинг каждой собаки.

Моя проблема в том, что мой метод подсчета не показывает результат каждой собакой, вместо этого он выглядит сложенным.

Например,

Question 1... dog 1 recieved a 2
Question 2... dog 2 recieved a 4
Question 3... dog 3 recieved a 1
Question 4... dog 1 recieved a 2

Гистограмма будет

dog 1: 4 units high (since 2+2=4)
dog 2: 4 units high
dog 3: 1 unit high

Правильно ли этот метод связывает имя собаки "x" с оценкой, которую она получаетиз рейтинговой строки "номер"?Что мне нужно изменить, чтобы заставить его делать это с моим методом hasmap?

СПАСИБО !!!

Класс CountDogRating

public HashMap<String, Integer> stackedBarRating(String x, int number) {

            HashMap<String, Integer> hm = new HashMap<>();
            String out = "";
            StringBuilder in = new StringBuilder();
            if (!hm.containsKey(x)) {
                hm.put(x, number);
            } else {
                hm.put(x, number + hm.get(x));
            }
            String[] arr1 = new String[hm.size()];
            String[] arr2 = new String[hm.size()];
            Set entries = hm.entrySet();
            Iterator entriesIterator = entries.iterator();
        if(4 clicks ==yes?){ // After 4 clicks, pass along info to dog class
            while (entriesIterator.hasNext()) {
                int i = 0;
                int j = 0;
                Map.Entry mapping = (Map.Entry) entriesIterator.next();
                arr1[i] = mapping.getKey().toString();//string
                arr2[i] = mapping.getValue().toString();//number
                String[] strings = new String[hm.size()];
                arr1Name = arr1[i];
                arr2Name = arr2[i];
                int arr2Number = Integer.valueOf(arr2Name);
                strings[i] = arr1Name + " " + arr2Name;
                String insert = arr1Name + " " + arr2Name;
                in.append(insert).append(System.getProperty("line.separator"));
                out = in.toString();
                dog.dataValues1SET1(Integer.valueOf(arr2Name), i); //For bargraph in dog class
                dog.labelsSet1(arr1Name);//For bargraph in dog class
                j++;
                i++;
            }
        }
        return hm;
    }
}

Класс собаки:

public static ArrayList<String> labels1 = new ArrayList<String>();

public void dataValues1SET1(float st1, int st2) {
    dataVales1.add(new BarEntry(st1, st2));
}

public List<BarEntry> dataValues1GET1() {
    return dataVales1;
}
...