Biggest of three

Здравейте.

Написал съм по сленият начин задачата: https://pastebin.com/F0s0AQrM, но не получавам никакви точки. “Test case#1- wrong answer; Test case#2- short circuit”
Ако може някой да ми съдейства?

Здравей,
не помня условието на задачата, но предполагам, че не печаташ резултата както се очаква - например, ако резултатът ти е double 5.0 дали се очаква да отпечаташ 5.00 или 5. Погледни това? :slight_smile:

1 Like

Условието:
Write a program that finds the biggest of three numbers that are read from the console.

Input

  • On the first three lines you will receive the three numbers, each on a separate line.

Output

  • On the only output line, write the biggest of the three numbers.

Constraints

  • The three numbers will always be valid floating-point numbers in the range [-200, 200] .

Промених формата на печатане и сега имам 50/100, но пак не мога да намеря къде бъркам (явно аз нещо не декларирам/печатам правилно
import java.util.Scanner;

public class BiggestOfThree {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double a = Double.parseDouble(scanner.nextLine());
double b = Double.parseDouble(scanner.nextLine());
double c = Double.parseDouble(scanner.nextLine());

    if (a >= -200.00 & a <= 200.00 & b >= -200.00 & b <= 200.00 & c >= -200.00 & c <= 200.00) {
        if (a >= b & a >= c) {
            System.out.printf("%.0f",a);
        } else System.out.printf("%.0f",Math.max(b, c));
    }

}

}

Здравей,
А няма ли примерен инпут/аутпут? В повечето задачи изрично е казано да печаташ например с 2 знака след десетичната запетая.

“%.0f” няма как да ти свърши работа, защото за целите числа ще се държи очаквано, но за double, ще ти ги закъгля до цели и ще води до 100% грешен отговор.

Ако няма указание за печатане, бих заложила, че при инпут 0, 0, 3.5, трябва да отпечаташ “3.5” , а при инпут 0, 0, 3, трябва да отпечаташ “3” (а не “3.0”, както би станало ако го разглеждаш като double, и не “4” както би отпечатал в момента кодът ти).
Това би постигнал с един if/else -> ако числото ти е равно на числото ти, кастнато към int, отпечатай int стойността, else -> отпечатай double стойността.

Здравей,

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

възможно ли е да ми изпратих решението да го разгледам?

Виждам, че бъркам точно в печатането, но не мога да си оправя оутпут-а.
Ако ми помогнеш с кастването ще съм благодарен.

Опитах се, но явно пак бъркам някъде. След съвета за кастването се опитах да нарпавя нещо и получавам 92/100. Ето го и самият код :

Моето решение е страшно идиотско, понеже вероятно ми е било първата решена задача тук изобщо :grin: но накрая съм правила това:
double max >>>

if (max == (int) max) {
System.out.println((int) max);
} else {
System.out.println(max);
}

Дано помага :slight_smile: