Здравей, Lhlhya,
Ако задаваш стойностите на променливите min
и max
преди прочитането на първото число от входните данни, то началната стойност на max
би трябвало да бъде
max = -Double.MAX_VALUE;
(или поне по-малка или равна на -10000, което по условие е минималната стойност на входна данна).
Константата Double.MIN_VALUE
задава най-малката положителна стойност, която може да се съхрани в променлива от тип double
, а именно
2-1074 ~ 4.9×10-324.
Тъй като множеството от дробни числа, които могат да се представят със стойност от тип double
, е симетрично относно 0, най-малката (крайна) стойност, която една променлива от този тип може да приеме, е -Double.MAX_VALUE
или
-(21024-2971) ~ -1.8×10308.
Също така, за да се обхванат случаите, в които входните данни се състоят само от едно число, проверката if (number < min)
би трябвало да бъде не в else
-клаузата на проверката if (number > max)
, а в отделен оператор if
:
if (number > max) {
max = number;
}
if (number < min) {
min = number;
}
В противен случай, например при следния вход:
1
1
програмата ще изведе
min=179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00
max=1.00
sum=1.00
avg=1.00
Тъй като по условие броят на входните данни, n
, е поне 1
, друг подход, както колегата @kanchelov е предложил в предния коментар, би бил първото число от входните данни да се прочете преди началото на цикъла и то да бъде общата начална стойност на min
, max
, и sum
. В този случай условният оператор в тялото на цикъла няма да има нужда да се разбива на два отделни.
Поздрави,
Иван