Почему, когда я ввожу слово "enter" в консоль, код НЕ срабатывает при таком условии
if (sc.nextLine().equalsIgnoreCase("enter"))
System.out.println(sum);
и СРАБАТЫВАЕТ при таком, обратном (с отрицанием)?
if (!(sc.nextLine().equalsIgnoreCase("enter")))
System.out.println(sum);
В общем, никто не ответил, подумала сама и пришла к выводу:
Смысл в этом:
Когда цикл while дошел до строки "enter', он ее проверил - не число. While завершился.
Код переходит к циклу if, и цикл if уже пропускает строку с "enter" как отработанную и присваивает значение ДАЛЬШЕ СЛЕДУЮЩЕЙ строке, то есть никакой, ПУСТОЙ. Пустая строка сравнивается с "enter" - ложь, программа завершается, сумма не выводится.
Проверила свои мысли, вбив в условие if такой код:
if (sc.nextLine().equals("")) //сравнение с пустой строкой
Код работает ИСПРАВНО тогда. Видимо, не дружат совсем nextInt() и nextLine() между собой, с одной и той же строкой работать не будут.
Я права хотя бы?
package com.javarush.task.pro.task04.task0403;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum=0;
int x;
while (sc.hasNextInt())
{x = sc.nextInt();
sum = x + sum;}
if (!(sc.nextLine().equalsIgnoreCase("enter")))
System.out.println(sum);
}
}