Компилятор пишет: "Проверь, что программа правильно работает с отрицательными числами".
Ребята, объясните пожалуйста, что не так.
Какие еще отрицательные числа ?
1) Переменной int max уже присвоено самое максимально (вниз) отрицательное число из возможных, т.е. Integer.MIN_VALUE;
2) Каково бы ни было значение переменной max:
- либо отрицательное (по умолчанию Integer.MIN_VALUE), если сканеру не подкинули на считывание положительное число;
- либо положительное, если таковое было введено;
в итоге все равно будет выведено значение переменной max.
Так какой еще проверки на отрицательные числа просит компилятор ?
Я скорее интуитивно ждал, что мне выдаст ошибку о невыводе Integer.MIN_VALUE в случае если сканер наткнется на символ или строку. Думал для этого прописать else для символа или строки. Но потом подумал, что никаких else на символ и строку не нужно, т.к. у меня и так System.out.println(max) стоит за рамками цикла и так или иначе выведет первичное значение max (т.е. Integer.MIN_VALUE) в случае если цикл даже не начнется, если hasNextInt не обнаружит во вводе цифр.
package com.javarush.task.pro.task04.task0408;
import java.util.Scanner;
/*
Максимум из введенных чисел
*/
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int max = Integer.MIN_VALUE;
while (sc.hasNextInt()) { // Цикл начался. Пока считывает любые числа
int a = sc.nextInt(); // переменной а присваивается считанное число
if (a % 2 == 0 && a > max) { // если а делится на 2 без остатка и при этом
// больше max (т.е. больше Integer.MIN_VALUE)
max = a; // max = a
// по умолчанию, если все вышеописанные условия
// не верны, то max остается
// равным Integer.MIN_VALUE
}
break; //
}
System.out.println(max); //
}
}