Здравствуйте!
Вот, ваш исходый код:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList array = new ArrayList<>();
System.out.println("Введите числа");
while (true) {
int number = input.nextInt();
array.add(number);
if (number == 0) {
break;
}
int max = 0;
for (int i = 0; i < array.length; i++) {
if (array.get(i) > max) {
max = array.get(i);
}
}
}
}
}
Вы пытаетесь получить размер используя length, но при этом используете объект ArrayList. У ArrayList для получения размера нужно использовать
size()
Ошибка:
i < array.length;
Либо создавайте массив чисел, либо если используете ArrayList (списочный массив), то вызывайте метод
size()
для получения размера списка.
Также обратите внимание, что вы пытаетесь сравнить числа находясь внутри цикла, но при этом до выполнения кода сравнения вы вводите ноль и выходите их массива.
Добавил комментарии в код:
if (number == 0) {
break; // вышли из цикла
}
// до сюда код не исполнится, так как выше break и вы вышли из цикла
int max = 0;
for (int i = 0; i < array.length; i++) {
if (array.get(i) > max) {
max = array.get(i);
}
}
А тут вам нужно передать параметризованный тип (желательно)
До -
ArrayList array = new ArrayList<>();
После -
ArrayList<Integer> array = new ArrayList<>();
Что касается получения максимального значения числа, то почему бы вам не воспользоваться возможностями пакета Math ? В частности метод
max()
или например, метод max() в Collections.
Вот, рабочий код:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Integer> array = new ArrayList<>();
System.out.println("Введите числа");
while (true) {
int number = input.nextInt();
array.add(number);
if (number == 0) {
break;
}
}
int maxValue = Collections.max(array);
System.out.println("Максимальное число " + maxValue);
}
}
Если вы хотите найти макс. значение самой итерируя по списку, то вот, другое решение
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Integer> array = new ArrayList<>();
System.out.println("Введите числа");
while (true) {
int number = input.nextInt();
array.add(number);
if (number == 0) {
break;
}
}
/*int maxValue = Collections.max(array);
System.out.println("Максимальное число " + maxValue);*/
int maxValue = 0;
for (int i : array) {
if (array.get(i) > maxValue) {
maxValue = array.get(i);
}
}
System.out.println("Максимальное число " + maxValue);
}
}