Проблем със задача Convert Degrees

preparation

#1

Здравейте,
Написаният от мен код дава грешка на един от тестовете и не мога да разбера къде точно греша. Задачата е от Wrokshop Loops.
Благодаря предварително.

Ето и кода.

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    ArrayList<Double> doubles = new ArrayList<Double>();
    String s = in.nextLine();
    String[] elements = s.split(" ");
    for (String doubleString : elements) {
        doubles.add(Double.parseDouble(doubleString));
        for (int i = 0; i < 1; i++) {
            double F;
            double var = Double.parseDouble(doubleString);
            F = (var * 1.8) + 32;
            System.out.printf("%.0f%n", F);
            }

        }

    }

}

#2

Привет,
Отговорът там е дробно число :), а при останалите явно е без знаци след десетичният знак.


#3

Здравей и благодаря за отговора.
И аз мислех като теб и пробвах различни варианти за форматиране, но точно на този тест не мина нито един от вариантите.
.
П.С.
намерих проблема :slight_smile: . Трябва да се отпечатва до 1 знак след запетаята, а не до 2, както аз го правех.


#4

@nljubka - Решението ти може да се опрости малко :wink:
Този ArrayList doubles не го използваш.
Имаш цикъл който се изпълнява само веднъж: for (int i = 0; i < 1; i++) { …}
т.е. и той е излишен :wink:

Явно теста е при input 21 Celsius, където отговора трябва да е 69.8 Fahrenheit.

Аз добавих условие дали отговора е цяло число или не: if (fahrenheit % 1 == 0) да принтира цяло число, иначе да принтира дробно с една цифра след десетичната запетая. Нарочно не поствам кода, за да може всеки да си поиграе


#5

Хахаха, развесели ме. Изтрий половината и ще го опростиш " малко",:):joy::joy:
А сега сериозно - голямо Благодаря. Опростих го по твой съвет.
Изключително е полезно, когато някой си направи труда да ти посочи къде грешиш, за да може да се научиш да правиш нещата правилно.
Иначе тестваш някакъв код, той си върши работата, но не е най-ефективния.
Отново - благодаря много.


#6

Аз също разглеждам чужд код, за да видя подхода към решения :wink: Черпя нови идеи :wink: Happy coding :slight_smile:


#7

Здравей :slight_smile:
Как точно разбра какви са входните данни на теста и защо отовора не е цяло число?

Примерите са с цели числа.

Трябва ли да си нагаждаме решенията към задачите, като добавяме изключения или условията не са достатъчно ясни?


#8

Привет,
От формулата може да се досетите - умножаваме цяло по дробно и събираме с цяло число, всяко цяло незавършващо на 0 или 5, ще генерира дробно число :slight_smile:


#9

Програмите работят с инструкции, а не с досещане :slight_smile:


#10

Различно форматиране на резултати при един процес също е странно нещо…


#11

Типовете в javascript са динамични. 10 * 1.8 //18; 6*1.8//10.8 от там идва и удобството и проблемите след това :wink:
https://www.w3schools.com/js/js_datatypes.asp


#12

Използвай DecimalFormat, като тук уловката е да зададеш правилният “pattern” за форматиране и минава 100/100.


#13

Няма проблем и с double и минава на 100%, но не разбирам това с уловка или досещане. В нито един сайт не съм видяла да изписват градусите в различен формат.


#14

Здравейте,

Не е идеята да има различни тестове или уловка, а просто грешка в условието, тъй като не е специфицирано как да се форматира крайния отговор. Извиняваме се за неудобството и ще оправим теста и условието. :slight_smile:
Тези от вас, които са изкарали точки със старото решение ще продължат да си ги имат.