Exam Java Basics - 21 Sept 2014 Morning --> Problem04

Exam Java Basics - 21 Sept 2014 Morning --> Problem04

Nick1R1 avatar Nick1R1 115 Точки

Според мен задачата ти не ти работи коректно, незнам точно как си го решил, но ти направих корекции на задачатат дотук.

1. можеш да парснеш Amount директно към Long като изрежеш отзад кг-те с

replaceAll("kg", ""))

2. можеш да си събираш директно резултата като килограми, като правиш една проверка дали е Null и ако е нул го правиш да е 0, защото няма как да се събере - трудно ми е да го обясна - става ей така: 

Long count = companies.get(company).get(nuts);
if (count == null) {
    count = 0l;
}
companies.get(company).put(nuts, amount + count) 
Целия код без принтирането е http://pastebin.com/6PYv9fuH 

За принтирането ще ти дам подобен output  от друга задача да се помъчиш с него :)


for (Map.Entry<String, TreeMap<String, Long>> item: dict.entrySet()) {
        item.getValue().entrySet().stream().forEach((entry) -> {
        System.out.println(entry.getKey() + "-" + entry.getValue() + "kg");
    });
}

 

1
06/11/2015 18:16:09
ptbgnr avatar ptbgnr 1 Точки

Кода, който си написал не ми пресмята нищо, и принтирането хвърля ексепшън. Може ли малко повече разяснение или да ми дадеш целия код на задачата, да разбера по - добре ?

0
ptbgnr avatar ptbgnr 1 Точки

Би ли ми казъл защо този input на Population Counter не разботи  ? 

1
Nick1R1 avatar Nick1R1 115 Точки

Не си ескейп-нал това по което сплитваш, трябва да сплитваш масива по "//|"

Може да имаш и други проблеми, но оправи си това и виж нататък как е, пиши ако нещо,

:)

0
10/11/2015 16:40:16
ptbgnr avatar ptbgnr 1 Точки

Сплитнах, но не работи

0
Nick1R1 avatar Nick1R1 115 Точки

Другото което виждам е , че ти трябва да сплитваш входа който вече си взел, а ти сплитваш нов инпут от конзолата и прескачаш първия.

Веднага под while-а сплитни line-a  и премести новото четене на line  да е най-отдолу, ти по този начин прескачаш и първия ред.. :)

1
ptbgnr avatar ptbgnr 1 Точки

Първият пример не ми тръгва sad

0
Nick1R1 avatar Nick1R1 115 Точки

Драсни новия код

0
Nick1R1 avatar Nick1R1 115 Точки
String[] strArray = line.split("\\|+");   

Тук трябва е така, сплитвай стринга, защото като сплитнеш нов ред и прескачаш този който ти е най-горния.

Дефакто първия ред от примера не го сплитваш, той после като е най-долу си взима следващия ред :)

1
r_panchev97 avatar r_panchev97 75 Точки

Сплитнах го както каза, но пак не работи

0