Софтуерно Инженерство
Loading...
fbinnzhivko avatar fbinnzhivko 1574 Точки

JAVA проблем - Programmning Basic -> Simple Conditional Statements -> Metric Converter

Judje линк -  https://judge.softuni.bg/Contests/Practice/Index/152#7
Решение на JAVA - https://pastebin.com/6FswkknL - 98/100.
Какъв е проблема според вас?

 

Даже редакторите на Книгата за Java имат 98/100 на тази задача.
https://github.com/SoftUni/Programming-Basics-Resources/blob/master/Java/Solutions/3.1.%20SimpleConditions/MetricConverter.java

 

 

 

Тагове:
0
Основи на програмирането 04/09/2017 22:56:47
icowwww avatar icowwww 881 Точки
Best Answer

Здравей, с double се губи прецизност при умножението. Ако използваш BigDecimal минава с 100/100 - пробвах го

https://pastebin.com/HEBsiw6y 

 

Едит: Всъщност ми беше интересно и се поразрових. Дори се оказа, че може да се реши с double като се промени принтирането на изхода: https://pastebin.com/9irexiu6. Ето каква тема намерих: https://softuni.bg/forum/13902/java-promenya-li-f-tochnostta-na-double

0
05/09/2017 00:20:21
ivaely avatar ivaely 1 Точки

Здравейте и благодаря за уточнението!

Искам да добавя, че в слайд 32 от презентацията за логическите проверки има подвеждащо описание на въпросната задача.

if (sourceMetric == "km") тук променливата е стринг, а както знаем стринг се сравнява с .equals, а не с "==".

Ето това: 

Конвертор за мерни единици – решение
double size = Double.parseDouble(scanner.nextLine());
String sourceMetric = scanner.nextLine();
String destMetric = scanner.nextLine();
if (sourceMetric == "km")
size = size / 0.001;
// TODO: mm, cm, ft, yd, ...
if (destMetric == "ft")
size = size * 3.2808399;
// TODO: mm, cm, ft, yd, ...
System.out.println(size + " " + destMetric);

0