Хотя вы действительно добавляете последнее отрицательное число в расчеты, это не является основной причиной, по которой ваш код не работает. Вы на самом деле проверяете, больше ли прочитанный вами ввод предыдущий больше 0:
while(true){
months++;
System.out.println("Write " + months + ". month income: ");
if(income >= 0){ <------
income = input.nextInt();
То есть l oop остановится, только если предыдущий ввод меньше 0. Другими словами, когда вы вводите, например, -1
in, ввод не проверяется до следующей итерации l oop, когда точка -1
уже добавлена в массив. Поэтому вместо этого следует проверить income >= 0
сразу после nextInt
:
System.out.println("Write the income of each month.");
ArrayList<Integer> array = new ArrayList<>();
while(true){
months++;
System.out.println("Write the income for month" + months + ":");
int income = input.nextInt();
if(income >= 0){
sum += income;
array.add(income);
}
else {
break;
}
}
Обратите внимание, что я также удалил бит между Write the income of each month.
и while
l oop, поскольку это избыточно.