Вывод максимального числа в последовательности

Задание заключается в следующем: напишите программу, которая считывает последовательность целочисленных значений из стандартного вывода и находит максимальное из них. Уточнение:

  1. Вы должны считывать значения последовательности, пока следующее не станет 0. Нулевое значение означает конец входной последовательности и не является ее элементом.

  2. Последовательность гарантированно содержит хотя бы одно значение.

    public class FindMaxInSeq {
    public static int max() {
        Scanner scnr = new Scanner(System.in);
        int maxSoFar=0 ;
        int currValue;
        do {
            currValue = scnr.nextInt();
            if (currValue > maxSoFar ) {
                maxSoFar = currValue;
            }
        } while (currValue != 0);
    
        return maxSoFar;
    }
        public static void main (String[]args){
    
            System.out.println("Test your code here!\n");
    
            FindMaxInSeq test = new FindMaxInSeq();
    
            System.out.println(max());
        }
    }        
    

Код работает, но не полностью, при вводе отрицательного числа и 0 выводит ноль, а должно быть наоборот. Пример-ввод: -966598 0 вывод: 0. А должно быть -966598. Заранее спасибо


Ответы (1 шт):

Автор решения: had0uken

Проблема в инициализации переменной. Решить можно кучей способов, например так:

public class FindMaxInSeq {
    public static int max() {
        Scanner scnr = new Scanner(System.in);
        int currValue = scnr.nextInt();
        int maxSoFar=currValue;
        while (true) {
            currValue = scnr.nextInt();
            if(currValue==0)break;
            if (currValue >= maxSoFar ) {
                maxSoFar = currValue;
            }
        }

        return maxSoFar;
    }
    public static void main (String[]args){

        System.out.println("Test your code here!\n");

        FindMaxInSeq test = new FindMaxInSeq();

        System.out.println(max());
    }
}
→ Ссылка