Вывод максимального числа в последовательности
Задание заключается в следующем: напишите программу, которая считывает последовательность целочисленных значений из стандартного вывода и находит максимальное из них. Уточнение:
Вы должны считывать значения последовательности, пока следующее не станет 0. Нулевое значение означает конец входной последовательности и не является ее элементом.
Последовательность гарантированно содержит хотя бы одно значение.
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());
}
}